我已经在该地址内创建了多播地址FROM.TEXT和一个Anycast队列FROM.TEXT。将该队列配置为具有max-consumers =“ 10”。
<address name="FROM.TEXT">
<multicast>
<queue name="FROM.TEXT" max-consumers="10">
<durable>true</durable>
</queue>
</multicast>
</address>
我创建了2条骆驼路线,这些路线将使用此队列中的消息并路由到2个不同的队列:
public void configure() throws Exception {
InitialContext context = new InitialContext();
from("jms:FROM.TEXT")
.routeId("route1")
.autoStartup(true)
.convertBodyTo(String.class, "UTF-8")
.to("jms:QUEUE1");
getContext().start();
}
当我启动route1时,它为队列创建了使用者,但是当我启动route2时,什么也没有发生。我需要这样做是因为同一条消息必须路由到2个不同的队列。
谢谢。
答案 0 :(得分:1)
如果希望连接到目标的任何客户端都收到相同的消息,则应使用JMS主题。只需定义一个支持多播的地址即可:
<address name="FROM.TEXT">
<multicast/>
</address>
那么您要走的路线将类似于:
public void configure() throws Exception {
InitialContext context = new InitialContext();
from("jms:topic:FROM.TEXT")
.routeId("route1")
.autoStartup(true)
.convertBodyTo(String.class, "UTF-8")
.to("jms:queue:QUEUE1");
getContext().start();
}
您将像这样定义to
队列:
<address name="QUEUE1">
<anycast>
<queue name="QUEUE1">
</anycast>
</address>