我在Message侦听器中使用以下配置:
<bean id="container"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="autoStartup" value="true" />
<property name="connectionFactory" ref="connectionFactory" />
<property name="destinationName" value="queue.name" />
<property name="pubSubDomain" value="true" />
<property name="pubSubNoLocal" value="true" />
<property name="durableSubscriptionName" value="subscription.id" />
<property name="subscriptionDurable" value="true" />
<property name="concurrency" value="1" />
<property name="messageSelector" value="Trade IS NOT NULL" />
<property name="sessionTransacted" value="true" />
</bean>
在消息选择器中,Trade指的是我应该通过JMS接收的XML标签。
这不起作用。我搜索了很多。我没有得到很多关于如何将这个条件放入消息选择器的线索。
答案 0 :(得分:2)
没有
请参阅消息选择器教程(google:&#34; jms消息选择器教程&#34;)。
具体做法是:
消息使用者只接收其标题和属性与选择器匹配的消息。 (请参阅邮件标题和邮件属性。)邮件选择器无法根据邮件正文的内容选择邮件。
您无法选择任意消息内容。您需要让发件人在发送之前将标记的内容添加为邮件属性。
修改强>
请不要使用旧的文档参考;使用the current docs或始终可以在project page
上找到最新文档要使用Spring Integration进行过滤(使用后),可以使用XPathFilter:
<int-xml:xpath-filter id="booleanFilter" input-channel="booleanFilterInput" discard-channel="booleanFilterRejections">
<si-xml:xpath-expression expression="/foo/bar"/>
</int-xml:xpath-filter>
这将传递具有<foo>...</foo>
子元素的所有<bar>...</bar>
文档,并拒绝那些不属于(或不是foos)的文档。