【问题标题】:How to consume messages from a Topic ActiveMQ Artemis如何使用来自 Topic ActiveMQ Artemis 的消息
【发布时间】:2019-02-11 18:37:03
【问题描述】:

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

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

使用 Apache Camel 创建了 2 条路由以在此主题中进行连接,但是当我发布消息时,只有一个路由使用该消息,而当我发布另一条消息时,第二条路由使用该消息消息。

下面的代码和输出。

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);
  }
}
2019-02-11 16:35:42 [Camel (camel-1) thread #1 - JmsConsumer[TEST.TOPIC]] INFO  Route1:159 - ROUTE1: {"message":1}
2019-02-11 16:35:45 [Camel (camel-1) thread #2 - JmsConsumer[TEST.TOPIC]] INFO  Route2:159 - ROUTE2: {"message":2}
2019-02-11 16:35:48 [Camel (camel-1) thread #1 - JmsConsumer[TEST.TOPIC]] INFO  Route1:159 - ROUTE1: {"message":3}
2019-02-11 16:35:51 [Camel (camel-1) thread #2 - JmsConsumer[TEST.TOPIC]] INFO  Route2:159 - ROUTE2: {"message":4}
2019-02-11 16:35:54 [Camel (camel-1) thread #1 - JmsConsumer[TEST.TOPIC]] INFO  Route1:159 - ROUTE1: {"message":5}

【问题讨论】:

    标签: apache-camel activemq-artemis


    【解决方案1】:

    您正在从队列中消费,而不是从主题中消费。 您需要更正消费者的 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);
    

    【讨论】:

    • 您好,谢谢!工作。我检查了一下,他创建了 2 个“队列”,每个消费者一个。我只是将消息发送到地址,所有消费者都会收到消息。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2019-04-02
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多