首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自同一产地的骆驼的多种途径

来自同一产地的骆驼的多种途径
EN

Stack Overflow用户
提问于 2014-01-22 09:16:19
回答 1查看 4.7K关注 0票数 1

我有一个包含多个消费者的JMS队列。我试着沿着骆驼的路线走,

代码语言:javascript
复制
<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>

信息是以,

代码语言:javascript
复制
producer.sendBodyAndHeader("Hello from Producer-1", "type", "1");
producer.sendBodyAndHeader("Hello from Producer-2", "type", "2");

只使用第一条消息。根据路由,第二条消息永远不会到达consumerBean。Q1.这里缺少配置吗?

我希望有多个路由,因为我需要动态地添加/删除路由。因此,在这里有一条具有多种选择的单一路线是不合适的。

Q2.骆驼通过头检查消息是否从队列中删除?因此它不能用于其他路由?更新:参考http://fusesource.com/docs/router/2.5/eip/MsgEnd-Selective.html。过滤器通过使用消息来工作。所以选择器是唯一的选择。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-22 09:58:10

如果您希望您的所有路由(消费者)接收所有消息,那么您需要订阅一个主题。队列上的消息只能使用一次。有关主题的消息将传递给所有订阅的使用者。

如果要使用队列,可以使用JMS选择器。但是,选择器是一个端点选项,您尚未在代码片段中设置该选项。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21278648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档