【发布时间】:2014-02-12 06:11:53
【问题描述】:
我有一个包含多个消费者的 JMS 队列。我正在尝试跟随骆驼路线,
<camel:camelContext id="camel-server">
<camel:package>com.camlin.consumer</camel:package>
<camel:route id="one">
<camel:from uri="jms:queue:request" />
<camel:choice>
<camel:when>
<camel:simple>${header.type} == '1'</camel:simple>
<camel:to uri="bean:consumerBean?method=receive1" />
</camel:when>
</camel:choice>
</camel:route>
<camel:route id="two">
<camel:from uri="jms:queue:request" />
<camel:choice>
<camel:when>
<camel:simple>${header.type} == '2'</camel:simple>
<camel:to uri="bean:consumerBean?method=receive2" />
</camel:when>
</camel:choice>
</camel:route>
</camel:camelContext>
消息发送为,
producer.sendBodyAndHeader("Hello from Producer-1", "type", "1");
producer.sendBodyAndHeader("Hello from Producer-2", "type", "2");
仅使用第一条消息。根据路由,第二条消息永远不会到达 consumerBean。 第一季度。此处是否缺少任何配置?
我想要多条路线,因为我需要动态添加/删除路线。所以这里不适合单条路线多选。
第二季度。当骆驼通过标头检查消息时是否将其从队列中删除?以致于其他路线无法使用? 更新:请参阅http://fusesource.com/docs/router/2.5/eip/MsgEnd-Selective.html。过滤器通过使用消息来工作。所以选择器是唯一的选择。
【问题讨论】:
标签: spring jakarta-ee apache-camel hornetq