Как Wso2CEP выбирает сообщения в JMS
Я использую wso2cep 3.0.0 и activemq5.8.0 Согласно документам CEP, я хочу публиковать события, используя CEP. Для этого я начал activemq с 2, определив QUEUES с именем jmsProxy для входящего сообщения и JmsProxy для входящего сообщения. Я добавил требуемые jars в CEP lib activemq-broker-5.8.0.jar,activemq-client-5.8.0.jar,axiom.jar, Джеронимо-j2ee-management_1.1_spec-1.0.1.jar, Джеронимо-jms_1.1_spec-1.1.1.jar,hawtbuf-1.2.jar,xpp3-1.1.4c.jar, XStream-1.4.4.jar
моя конфигурация похожа на эту InputEventAdaptor
<?xml version="1.0" encoding="UTF-8"?>
<inputEventAdaptor name="jmsProxy" statistics="disable" trace="enable"
type="jms" xmlns="http://wso2.org/carbon/eventadaptormanager">
<property name="java.naming.provider.url">tcp://localhost:61616</property>
<property name="transport.jms.SubscriptionDurable">true</property>
<property name="transport.jms.DurableSubscriberName">jmsProxy</property>
<property name="transport.jms.UserName">admin</property>
<property name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</property>
<property name="transport.jms.Password">admin</property>
<property name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</property>
<property name="transport.jms.DestinationType">queue</property>
</inputEventAdaptor>
выше для входящих сообщений, которые будут выбирать сообщения из очереди jmsProxy, но он не может выбрать сообщение из очереди jmsProxy. Как бы я мог инициировать это, чтобы получить сообщение в CEP и outputEventAdaptor? Мне нужно инициализировать что-то, чтобы jms мог выбрать сообщения из jMS почему, потому что я пытался во многих отношениях все настройки в порядке, но не могу выбрать сообщение из JMS
<?xml version="1.0" encoding="UTF-8"?>
<outputEventAdaptor name="JmsProxy" statistics="disable" trace="disable"
type="jms" xmlns="http://wso2.org/carbon/eventadaptormanager">
<property name="java.naming.security.principal">admin</property>
<property name="java.naming.provider.url">tcp://localhost:61616</property>
<property name="java.naming.security.credentials">admin</property>
<property name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</property>
<property name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</property>
<property name="transport.jms.DestinationType">queue</property>
</outputEventAdaptor>
Конфигурация Event Builder, как это
<?xml version="1.0" encoding="UTF-8"?>
<eventBuilder name="ReadingsDtoBuilder" statistics="disable"
trace="disable" xmlns="http://wso2.org/carbon/eventbuilder">
<from eventAdaptorName="jmsProxy" eventAdaptorType="jmsProxy">
<property name="transport.jms.Destination">JmsProxy</property>
</from>
<mapping customMapping="disable"
parentXpath="//ReadingsLiteTaildtos" type="xml">
<property>
<from xpath="//ReadingsLiteTaildto/ParameterId"/>
<to name="meta_parameterId" type="string"/>
</property>
<property>
<from xpath="//ReadingsLiteTaildto/Slno"/>
<to name="meta_slno" type="string"/>
</property>
<property>
<from xpath="//ReadingsLiteTaildto/FinalValue"/>
<to name="finalValue" type="int"/>
</property>
<property>
<from xpath="//ReadingsLiteTaildto/InputText"/>
<to name="inputText" type="string"/>
</property>
<property>
<from xpath="//ReadingsLiteTaildto/InputValue"/>
<to name="inputValue" type="double"/>
</property>
</mapping>
<to streamName="org.sample.readings.dto.stream" version="1.0.0"/>
</eventBuilder>
План выполнения может быть следующим.
<?xml version="1.0" encoding="UTF-8"?>
<executionPlan name="ReadingsAnalyzer" statistics="disable"
trace="disable" xmlns="http://wso2.org/carbon/eventprocessor">
<description>This execution plan analyzes readings and triggers notifications based on threshold.</description>
<siddhiConfiguration>
<property name="siddhi.enable.distributed.processing">false</property>
<property name="siddhi.persistence.snapshot.time.interval.minutes">0</property>
</siddhiConfiguration>
<importedStreams>
<stream as="readings" name="org.sample.readings.dto.stream" version="1.0.0"/>
</importedStreams>
<queryExpressions><![CDATA[from readings[finalValue > 100]
select *
insert into notificationStream;]]></queryExpressions>
<exportedStreams>
<stream name="notificationStream" valueOf="notificationStream" version="1.0.0"/>
</exportedStreams>
</executionPlan
Я определил потоки внутри stream-manager-config.xml, как показано ниже.
<streamDefinition name="org.sample.readings.dto.stream" version="1.0.0">
<metaData>
<property name="parameterId" type="STRING"/>
<property name="slno" type="STRING"/>
</metaData>
<payloadData>
<property name="finalValue" type="INT"/>
<property name="inputText" type="STRING"/>
<property name="inputValue" type="DOUBLE"/>
</payloadData>
</streamDefinition>
<streamDefinition name="notificationStream" version="1.0.0">
<metaData>
<property name="parameterId" type="STRING"/>
<property name="slno" type="STRING"/>
</metaData>
<payloadData>
<property name="finalValue" type="INT"/>
<property name="inputText" type="STRING"/>
<property name="inputValue" type="DOUBLE"/>
</payloadData>
</streamDefinition>
похоже, все хорошо, пока я отправляю любое сообщение в мою очередь jmsProxy, сообщение не отображается в CEP для события, и я получаю это сообщение в CEP. Означает, что не удалось получить сообщение в CEP, и я получаю ошибки, подобные этой
[2014-02-18 11:57:53,159] INFO - {EventBuilderDeployer} Event Builder undeployed successfully : ReadingsDtoBuilder.xml
[2014-02-18 11:57:53,160] INFO - {EventBuilderDeployer} Event builder deployment held back and in inactive state :ReadingsDtoBuilder, Waiting for Input Event Adaptor dependency :jmsProxy
[2014-02-18 12:03:58,006] INFO - {InputEventAdaptorConfigurationFilesystemInvoker} Input Event Adaptor configuration deleted from file system : jmsProxy.xml
[2014-02-18 12:03:58,006] INFO - {InputEventAdaptorDeployer} Input Event Adaptor undeployed successfully : jmsProxy.xml
[2014-02-18 12:03:58,008] INFO - {InputEventAdaptorConfigurationFilesystemInvoker} Input Event Adaptor configuration saved in th filesystem : jmsProxy
[2014-02-18 12:03:58,009] INFO - {InputEventAdaptorDeployer} Input Event Adaptor deployed successfully and in active state : jmsProxy
[2014-02-18 12:03:58,009] INFO - {EventBuilderDeployer} Event Builder undeployed successfully : ReadingsDtoBuilder.xml
[2014-02-18 12:03:58,009] INFO - {EventBuilderDeployer} Event builder deployment held back and in inactive state :ReadingsDtoBuilder, Waiting for Input Event Adaptor dependency :jmsProxy
Я действительно сыт по горло документами wso2 без надлежащего объяснения по какой-либо теме. Как его понять, как ВХОДЯЩЕЕ сообщение попадет в конструктор входных событий Пожалуйста, помогите мне выйти из этой проблемы. Заранее спасибо, Фейсал Шайк
1 ответ
Глядя на вашу конфигурацию, кажется, что вы указали тип входного адаптера как 'jmsProxy', что неверно. Это должно быть исправлено как просто "JMS". т.е.
<from eventAdaptorName="jmsProxy" eventAdaptorType="jms">
Способ работы JMS-соединения заключается в следующем. Детали соединения указываются адаптером событий ввода. Но подписка на определенную тему или прослушивание в определенной очереди происходит только после того, как указана конфигурация построителя событий, поскольку имя темы / очереди указывается в конфигурации построителя событий как свойство transport.jms.Destination.
Поэтому, если вы указали Назначение как "JmsProxy" в конфигурации построителя событий, убедитесь, что в посреднике ActiveMQ существует очередь с именем "JmsProxy" и что события публикуются в этой очереди.
Самый простой способ устранения возникшей проблемы - включить отслеживание артефактов CEP. Каждое событие проходит последовательность Адаптер входных событий -> Построитель событий -> Обработчик событий (План выполнения) -> Форматер событий -> Адаптер выходных событий. Если вы включите трассировку всех 5 артефактов и отчеты о трассировке входящих и исходящих событий в Input Event Adapter и только входящие события в Event Builder, вы можете сделать вывод, что проблема в конфигурации построителя событий и т. Д.
Если после исправления типа Адаптера входных событий у вас по-прежнему возникает проблема, включите трассировку и поделитесь соответствующими сообщениями, напечатанными в трассировке, чтобы определить, в каком артефакте возникает проблема.
Надеюсь это поможет,