2014-03-04 45 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