【发布时间】:2018-10-18 01:50:08
【问题描述】:
我在这个地址中创建了多播地址 FROM.TEXT 和一个任播队列 FROM.TEXT。将此队列配置为 max-consumers="10"。
<address name="FROM.TEXT">
<multicast>
<queue name="FROM.TEXT" max-consumers="10">
<durable>true</durable>
</queue>
</multicast>
</address>
我创建了 2 个 Camel 路由,它们将使用来自该队列的消息并路由到 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 个不同的队列。
谢谢。
【问题讨论】:
-
说你创建了一个带有任播队列的多播地址是没有意义的。您所做的是使用单个多播队列创建地址。但是,由于只有 1 个多播队列,因此语义与拥有单个任播队列没有什么不同。多播的要点是所有多播队列都会收到发送到该地址的任何消息。任播的要点是,1 个任播队列将收到发送到该地址的任何消息。
标签: apache-camel activemq-artemis