我有一个实现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>