当前位置: 首页 > 知识库问答 >
问题:

Apache Artemis-通过多个队列按地址路由消息

刘元青
2023-03-14

我有这样的场景:

ADDRESS1:
   -ADDRESS1.QUEUE1
   -ADDRESS1.QUEUE2

ADDRESS2:
   -ADDRESS2.QUEUE1
   -ADDRESS2.QUEUE2

具有多个选播队列的两个地址。我需要将消息路由到指定的队列中的地址。

Messages on ADDRESS1::ADDRESS1.QUEUE1 goes to -> ADDRESS2::ADDRESS2.QUEUE1 
Messages on ADDRESS1::ADDRESS1.QUEUE2 goes to -> ADDRESS2::ADDRESS2.QUEUE2
CamelContext context = new DefaultCamelContext();
    ConnectionFactory factory = new ActiveMQConnectionFactory("admin", "admin", "tcp://0.0.0.0:61616");

    context.addComponent("artemis", JmsComponent.jmsComponentAutoAcknowledge(factory));

    context.addRoutes(new RouteBuilder() {

        @Override
        public void configure() throws Exception {
            from("artemis:ADDRESS1::ADDRESS1.QUEUE1")
            .log("${body}")
            .to("artemis:ADDRESS2::ADDRESS2.QUEUE1");
        }
    });

    context.addRoutes(new RouteBuilder() {

        @Override
        public void configure() throws Exception {
            from("artemis:ADDRESS1::ADDRESS1.QUEUE2")
            .log("${body}")
            .to("artemis:ADDRESS2::ADDRESS2.QUEUE2");
        }
    });
APP1
   QUEUE1
   QUEUE2
   QUEUE3

共有1个答案

苗森
2023-03-14

尝试禁用生产者endpoint上的“replyto”:

.to("artemis:ADDRESS2::ADDRESS2.QUEUE1?disableReplyTo=true")
 类似资料:
  • 路由地址 路由地址表示定义的路由表达式最终需要路由到的地址以及一些需要的额外参数,支持下面几种方式定义: 定义方式 定义格式 方式1:路由到模块/控制器 '[模块/控制器/操作]?额外参数1=值1&额外参数2=值2...' 方式2:路由到重定向地址 '外部地址'(默认301重定向) 或者 ['外部地址','重定向代码'] 方式3:路由到控制器的方法 '@[模块/控制器/]操作' 方式4:路由到类的

  • 我将与一起使用中的这个库。所有使用者均为,所有队列均为(4小时)。 我有很多队列没有任何挂起的ack,但仍然保存着数百条消息。此外,队列不会在应该过期时过期,这将在几天后产生性能问题。我没有找到任何理由来解释为什么消息在ack处理之后仍然在队列中。 谢谢 管理工具中的一些快照:

  • 英文原文:http://emberjs.com/guides/routing/specifying-the-location-api/ 默认情况下,路由通过浏览器的哈希来加载应用程序的起始状态,并且你在程序里点来点去的时候也是通过哈希来保持同步的。 目前,这依赖于浏览器中的hashchange事件。 下面的这个路由会将你从/#/posts/new 带到 posts.new 路由中去。 1 2 3

  • 5. IP地址与路由 IPv4的IP地址长度为4字节,通常采用点分十进制表示法(dotted decimal representation)例如0xc0a80002表示为192.168.0.2。Internet被各种路由器和网关设备分隔成很多网段,为了标识不同的网段,需要把32位的IP地址划分成网络号和主机号两部分,网络号相同的各主机位于同一网段,相互间可以直接通信,网络号不同的主机之间通信则需要

  • 我的查询是针对产品Red Hat AMQ7.x(我使用的是7.2),它基于Apache ActiveMQ Artemis和一个使用AMQP协议连接到队列的.NET客户机。 Artemis的一篇文章讨论了单播(点对点)、多播(发布-订阅)以及这些寻址的组合:https://activemq.apache.org/Artemis/docs/2.0.0/address-model.html 它没有详细说

  • 将来自许多不同来源(实际上是队列/主题)的消息聚合到单个队列/主题中,然后使用它的最佳方法是什么。我正在尝试设计一个应用程序,以使用weblogic从JMS中的不同主题接收消息。