Apache camel 如何使用来自主题ActiveMQ Artemis的消息

Apache camel 如何使用来自主题ActiveMQ Artemis的消息,apache-camel,activemq-artemis,Apache Camel,Activemq Artemis,我正在尝试处理有关ActiveMQ Artemis的主题 我已经在这个地址中创建了一个多播地址和一个多播队列 在本主题中使用Apache Camel创建了两条路由以连接,但当我发布消息时,只有一条路由使用该消息,而当我发布另一条消息时,使用该消息的第二条路由使用该消息 下面是代码和输出 public class CamelRoutes { public static void main(String[] args) throws Exception { ActiveMQJMSCon

我正在尝试处理有关ActiveMQ Artemis的主题

我已经在这个地址中创建了一个多播地址和一个多播队列

在本主题中使用Apache Camel创建了两条路由以连接,但当我发布消息时,只有一条路由使用该消息,而当我发布另一条消息时,使用该消息的第二条路由使用该消息

下面是代码和输出

public class CamelRoutes {

  public static void main(String[] args) throws Exception {
    ActiveMQJMSConnectionFactory connection = new ActiveMQJMSConnectionFactory("tcp://localhost:61616", "admin", "admin");

    CamelContext camel = new DefaultCamelContext();
    camel.addComponent("amq", JmsComponent.jmsComponent(connection));

    camel.addRoutes(new RouteBuilder(){

      @Override
      public void configure() throws Exception {
        from("amq:TEST.TOPIC")
        .routeId("Route1")
        .log("ROUTE1: ${body}");
      }
    });
    camel.addRoutes(new RouteBuilder(){

      @Override
      public void configure() throws Exception {
        from("amq:TEST.TOPIC")
        .routeId("Route2")
        .log("ROUTE2: ${body}");
      }
    });
    camel.start();
    Thread.sleep(20000000);
  }
}

您是在队列中消费,而不是在主题中消费。 您需要更正消费者的URI方案

将您的消费者更改为:

from("amq:topic:TEST.TOPIC");

以下是创建队列使用者的方法:

from("amq:queue:YOUR.QUEUE.NAME);
// or as queue is default value
from("amq:YOUR.QUEUE.NAME);
from("amq:topic.YOUR.TOPIC.NAME);
以下是创建主题消费者的方法:

from("amq:queue:YOUR.QUEUE.NAME);
// or as queue is default value
from("amq:YOUR.QUEUE.NAME);
from("amq:topic.YOUR.TOPIC.NAME);

您是在队列中消费,而不是在主题中消费。 您需要更正消费者的URI方案

将您的消费者更改为:

from("amq:topic:TEST.TOPIC");

以下是创建队列使用者的方法:

from("amq:queue:YOUR.QUEUE.NAME);
// or as queue is default value
from("amq:YOUR.QUEUE.NAME);
from("amq:topic.YOUR.TOPIC.NAME);
以下是创建主题消费者的方法:

from("amq:queue:YOUR.QUEUE.NAME);
// or as queue is default value
from("amq:YOUR.QUEUE.NAME);
from("amq:topic.YOUR.TOPIC.NAME);

嗨,谢谢!工作。我检查了一下,他创建了两个“队列”,每个消费者一个。我只需将信息发送到地址,所有消费者都会收到信息。谢谢,嗨,谢谢!工作。我检查了一下,他创建了两个“队列”,每个消费者一个。我只需将信息发送到地址,所有消费者都会收到信息。谢谢