我们可以在Spring集成中的消息选择器中验证XML标记的存在吗?

时间:2014-11-17 08:51:48

标签: jms spring-integration

我在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标签。

这不起作用。我搜索了很多。我没有得到很多关于如何将这个条件放入消息选择器的线索。

1 个答案:

答案 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)的文档。