Mule ESB:JMS选择器表达式不起作用

时间:2015-06-19 05:28:39

标签: mule mule-studio

我有一个实现pub-sub模型的Mule集成。发布者将消息发布到主题,订阅者配置为从该主题接收消息。我希望此订阅者只有在名为“ENTITY_TYPE”的自定义属性具有以下值之一时才会收到消息:“accounts”,“contacts”或“cases”。不幸的是,这不起作用(我的意思是订阅者根本没有收到消息)。以下是代码段:

出版商:

AccountsFlow:

<set-property propertyName="ENTITY_TYPE" value="accounts" doc:name="Set Entity Type"/>
<jms:outbound-endpoint  connector-ref="Active_MQ_Publisher" doc:name="Publish Accounts" topic="${activemq.sfdc.topicname}" tracking:enable-default-events="true"/>

ContactsFlow:

<set-property propertyName="ENTITY_TYPE" value="contacts" doc:name="Set Entity Type"/>
<jms:outbound-endpoint  connector-ref="Active_MQ_Publisher" doc:name="Publish Contacts" topic="${activemq.sfdc.topicname}" tracking:enable-default-events="true"/>

CasesFlow:

<set-property propertyName="ENTITY_TYPE" value="cases" doc:name="Set Entity Type"/>
<jms:outbound-endpoint  connector-ref="Active_MQ_Publisher" doc:name="Publish Cases" topic="${activemq.sfdc.topicname}" tracking:enable-default-events="true"/>

订户:

<jms:inbound-endpoint  connector-ref="Active_MQ_Subscriber" doc:name="JMS" tracking:enable-default-events="true" topic="${activemq.sfdc.topicname}">
        <jms:selector expression="ENTITY_TYPE='accounts' OR ENTITY_TYPE='contacts' OR ENTITY_TYPE='cases'" />
</jms:inbound-endpoint>
<logger message="$$$: Entity Type = #[message.inboundProperties['ENTITY_TYPE']]" level="INFO" doc:name="Logger"/>

如果我删除'jms:selector'元素,那么我确实看到了日志中的输出:

2015-06-18 15:58:19,574 INFO o.m.a.p.LoggerMessageProcessor [[sfdcjob].AccountsContactsCasesSubscriberFlow.stage1.02] $$$: Entity Type = sfdc.locationheader

以下是env的详细信息:

Mule Standalone:3.6.2(企业版) 操作系统:Cent OS 7 Message Broker:Active MQ 5.11.1 适用于Mule和JHD的JVM活动MQ:1.7.0.75

我当然需要设置过滤器,并且只想接收其message属性设置为之前定义的值之一的消息(帐户,联系人,案例)。知道为什么JMS选择器无法正常工作吗?

修改:我尝试了另一种方法在发布商中设置实体类型,如下所示,但也无效。

<jms:outbound-endpoint  connector-ref="Active_MQ_Publisher" doc:name="Publish Accounts" topic="${activemq.sfdc.topicname}" tracking:enable-default-events="true">
        <message-properties-transformer doc:name="Message Properties" scope="outbound">
            <add-message-property key="ENTITY_TYPE" value="accounts" />
        </message-properties-transformer>
</jms:outbound-endpoint>

0 个答案:

没有答案