Публикация статистики из wso2 EI в потоковый процессор wso2

Мне нужно знать, как можно публиковать статистику через публикатор событий от Enteprise Integrator до Stream Processor.

У меня следующая реализация издателя событий на моем EI

<?xml version="1.0" encoding="UTF-8"?>
<eventPublisher name="MessageFlowStatisticsPublisher"
  statistics="enable" trace="enable" xmlns="http://wso2.org/carbon/eventpublisher">
  <from streamName="org.wso2.esb.analytics.stream.FlowEntry" version="1.0.0"/>
  <mapping customMapping="disable" type="wso2event"/>
  <to eventAdapterType="wso2event">
    <property name="username">admin</property>
    <property name="protocol">thrift</property>
    <property name="publishingMode">non-blocking</property>
    <property name="publishTimeout">0</property>
    <property name="receiverURL">tcp://xxx:7611</property>
    <property encrypted="true" name="password">xxx</property>
  </to>
</eventPublisher>

На потоковом процессоре у меня есть простое приложение siddhi для приема данных и их печати в журнале, как показано ниже.

@App:name("FlowEntryApp")
@App:description("Plan of flow entry")

@source(type='wso2event', @map(type = 'wso2event'))
define stream FlowEntry(compressed bool, tenantId int, messageId string, flowData string);

@sink(type='log', prefix='My flowEntry:')
define stream TestOutputFlowEntry(messageId string, flowData string);

@info(name='FlowEntryOutput')
from FlowEntry
select messageId, flowData
group by messageId
insert into TestOutputFlowEntry;

Также я установил всю конфигурацию для публикации статистики как «включить статистику» и «разрешить трассировку» для моей прокси-службы. Когда я вызываю свою службу, eventPublisher отправляет wso2event в SP, это работает правильно. Но на стороне SP ошибка обработки SP «Нет StreamDefinition для streamId org.wso2.esb.analytics.stream.FlowEntry: 1.0.0 присутствует в кеше»

Я знаю, что эта проблема в приложении сиддхи, что я определяю поток «FlowEntry» вместо «org.wso2.esb.analytics.stream.FlowEntry», но язык сиддхи не поддерживает такие символы, как '.' в названии потока.

Поэтому я попытался изменить имя потока на сайте EI, изменить имя потока в eventPublisher только на «FlowEntry», также я изменил имя потока в файле json внутри папки потока событий, но теперь, когда я вызываю свою службу, EI не будет отправлять какие-либо события в SP.

Кто-нибудь знает, как опубликовать поток org.wso2.esb.analytics.stream.FlowEntry в SP, а затем обработать его сиддхи?


person Dominik Zatloukal    schedule 07.02.2018    source источник


Ответы (1)


Имя потока можно переопределить, используя элемент wso2.stream.id в аннотации источника.

@source(type='wso2event', wso2.stream.id='org.wso2.esb.analytics.stream.FlowEntry', @map(type = 'wso2event'))<br>
define stream FlowEntry(compressed bool, tenantId int, messageId string, flowData string);

Используя приведенное выше определение источника, «FlowEntry» все еще можно использовать внутри приложения Siddhi, в то время как в экономичном сервере идентификатор потока будет определен как «org.wso2.esb.analytics.stream.FlowEntry: 1.0.0».

Наилучшие пожелания.

person Niveathika    schedule 07.02.2018
comment
Большое спасибо за быстрый и полезный ответ! Это мне очень помогло, теперь все работает нормально. Этот совет должен кто-то добавить в официальную документацию wso2 для потокового процессора или язык запросов siddhi, потому что официальная документация должна быть основной статьей для решения проблем. Еще раз спасибо! - person Dominik Zatloukal; 08.02.2018
comment
Пожалуйста, это действительно упоминается в документации siddhi-io-wso2event, wso2-extensions.github.io/siddhi-io-wso2event/api/latest - person Niveathika; 08.02.2018
comment
Ой, моя вина, я этого не заметил. Спасибо! - person Dominik Zatloukal; 08.02.2018