AMQP Qpid ActiveMQ 路由密钥

问题描述 投票:0回答:1

我正在使用 ActiveMQ“Classic”,我想使用 AMQP 协议。

目前我正在尝试将 AMQP 1.0 和 Java 客户端 Qpid JMS 客户端 2.2.0 和 qpid-amqp-1-0-client-jms 0.32 与 Spring Boot 3 和

jakarta
包一起使用。

最终目标是充分使用 AMQP,并可能在不更改我的代码的情况下用另一个代理替换 ActiveMQ,但我使用 VirtualTopic,如果我理解 AMQP 可以通过使用带通配符的“路由密钥”来做与 VirtualTopic 相同的事情。

我已经配置了一个简单的 Java 发送者和消费者并且一切正常,但现在我想使用“路由密钥”发布关于主题

TEST.*
的消息,但我被困在这里,我不知道如何设置我的带通配符的路由密钥。

java activemq amqp qpid
1个回答
0
投票

考虑反转您的应用程序设计,让消费者声明他们的兴趣,而不是发布者发送到目的地列表(或通配符匹配)。

pub-sub 的一个好的租户是将生产者和消费者从寻址中分离出来,这样可以减少耦合。这是 Virtual Topics 更强大的功能之一——它们超级实用。

使用虚拟主题没有什么不合规的地方。生产者简单地发布到一个主题,消费者从队列中读取。此功能在多个 JMS 规范代理中可用,并且不会将您锁定在 ActiveMQ 中。与 ActiveMQ 5 的不同之处在于管理开销超低。

  1. 向“主题”发布消息 - “TEST.EVENT”

  2. 任何感兴趣的消费者通过连接和创建队列(或者可以管理地创建队列)“Consumers.APP-1.TEST.EVENT”、“Consumers.APP-2.TEST.EVENT”等来注册自己。你也消费者能够注册选择器,因此他们只会收到过滤后的消息。

  3. 作为奖励,集群中的网络代理变得更加直接,因为它们在集群主题时会出现意外挂断。

  4. 这不是特定于协议或语言的。您可以使用不同的编程语言(Java、.NET、JavaScript、Pythong 等)或协议发送/接收——AMQP、JMS(openwire)、STOMP、MQTT 等,它“正常工作”

© www.soinside.com 2019 - 2024. All rights reserved.