Apache camel 2条驼峰路由使用相同的队列

Apache camel 2条驼峰路由使用相同的队列,apache-camel,activemq-artemis,Apache Camel,Activemq Artemis,我已经从.TEXT创建了多播地址,并在此地址内从.TEXT创建了选播队列。已将此队列配置为具有最大使用者=“10” 当我启动route1时,它的工作是为队列创建一个消费者,但当我启动route2时,什么都没有发生。我需要这样做,因为相同的消息必须路由到两个不同的队列 谢谢。如果您希望连接到目标的任何客户端都能获得相同的消息,那么您应该使用JMS主题。只需定义支持多播的地址: <address name="FROM.TEXT"> <multicast/> </

我已经从.TEXT创建了多播地址,并在此地址内从.TEXT创建了选播队列。已将此队列配置为具有最大使用者=“10”

当我启动route1时,它的工作是为队列创建一个消费者,但当我启动route2时,什么都没有发生。我需要这样做,因为相同的消息必须路由到两个不同的队列


谢谢。

如果您希望连接到目标的任何客户端都能获得相同的消息,那么您应该使用JMS主题。只需定义支持多播的地址:

<address name="FROM.TEXT">
    <multicast/>
</address>
您可以将
定义为
队列,如下所示:

<address name="QUEUE1">
   <anycast>
      <queue name="QUEUE1">
   </anycast>
</address>


说您已经用选播队列创建了多播地址是没有意义的。您所做的是使用单个多播队列创建一个地址。但是,由于只有一个多播队列,因此语义与拥有单个选播队列没有什么不同。多播的意义在于,所有多播队列都将获得发送到该地址的任何消息。anycast的要点是,其中一个anycast队列将获得发送到该地址的任何消息。谢谢您的回答。所以要在Artemis中创建一个主题,我只需要创建一个带有多播标记的地址,而不创建队列?很抱歉,但我真的不明白这个主题在Artemis版本上是如何工作的。是的。要在Artemis中创建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();
}
<address name="QUEUE1">
   <anycast>
      <queue name="QUEUE1">
   </anycast>
</address>