2014-03-04 85 views
0

我正在使用wso2cep 3.0.0和activemq5.8.0根据CEP文档,我希望使用CEP发布事件。为此,我开始使用activemq定义QUEUES,其中名为jmsProxy用于传入消息,JmsProxy用于out message.I在CEP lib中添加了所需的jar activemq-broker-5.8.0.jar,activemq-client-5.8.0.jar,公理的.jar,Geronimo的J2EE的management_1.1_spec-1.0.1.jar,Geronimo的jms_1.1_spec-1.1.1.jar,hawtbuf-1.2.jar,xpp3-1.1.4c.jar,XStream的-1.4.4.jarWso2CEP如何在JMS中选择消息

我的配置是这样的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 Queue.How消息将我initi吃了这个消息到CEP和outputEventAdaptor我需要初始化jms的某些东西可以从jMS中选择消息为什么因为我已经在很多方面尝试过所有配置都可以,但无法从中选择消息JMS

这样

<?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"?> 
<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> 

事件助洗剂配置中的执行计划可以像follows.like此

<?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 

I中所定义的内部流流的管理器-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的文档没有适当解释任何topic.How其wirk如何来电消息将进入越来越错误输入事件生成器请帮我解决这个问题。 在此先感谢, 费萨尔shaik

回答

0

看看你的配置,似乎你已经指定输入适配器类型为'jmsProxy'这是不正确的。它应该被修正为'jms'。即

<from eventAdaptorName="jmsProxy" eventAdaptorType="jms"> 

JMS连接的工作方式如下。连接细节由输入事件适配器指定。但是,由于在事件生成器配置中将主题/队列名称指定为属性'transport.jms.Destination',因此只有在指定了事件生成器配置后才会对特定主题进行订阅或在特定队列上进行侦听。

因此,如果您在事件生成器配置中将Destination指定为'JmsProxy',请确保ActiveMQ代理中存在名为'JmsProxy'的队列,并且该事件将发布到此队列中。

解决您所遇到将使得CEP文物的追查问题的最简单方法。每个事件经过输入事件适配器的序列 - >事件生成器 - >事件处理器(执行计划) - >事件格式化 - >输出事件适配器。如果您在输入事件适配器中启用全部5个工件的跟踪并跟踪报告传入和传出事件,并且仅在事件生成器中收到传入事件,则可以断定问题出现在事件生成器配置中等等。

如果仍然固定输入事件适配器类型后遇到问题,请启用跟踪和共享打印在跟踪,以确定其中神器问题所产生的相关消息。

希望这会有所帮助,

+0

thanx我已按照您的配置完成重播。现在,我在事件格式化越来越问题,我会纠正,并让üknoow – Faisal

+0

收到错误2014年3月6日12:57:01519] INFO - {} JMSTaskManager任务管理器的事件适配器:jmsProxy [重新]初始化 [2014 -03-06 12:57:01520] INFO - {} EventBuilderDeployer事件建设者部署阻碍和非活动状态:jmsProxyEventBuilde,流验证异常:输出流定义不可用 – Faisal

+0

您使用3.0.0版本,但在3.1.0有一张票=> https://wso2.org/jira/browse/CEP-971 – Kacu