如何在Qpid JMS中为ActiveMQ(如RabbitMQ)创建主题交换?

taor4pac  于 2023-10-20  发布在  RabbitMQ
关注(0)|答案(1)|浏览(135)

我有一个使用RabbitMQ的Java应用程序。这个应用程序创建一个TOPIC交换,并使用自己的路由键将消息推送到TOPIC。这样,如果我想要任何应用程序的数据,我就创建一个队列绑定,其中包含交换TOPIC和我想要的路由键。
我想通过使用Java应用程序来做同样的事情,其中Qpid JMS作为客户机,ActiveMQ作为服务器。资料上说有可能,但我不知道怎么做。我找不到一个具体的例子,似乎RabbitMQ。我可以创建队列,但我不知道如何创建交换和绑定。我应该遵循哪些步骤来实现它?

pb3skfrl

pb3skfrl1#

您可能会考虑使用ActiveMQ Artemis而不是ActiveMQ“Classic”,因为Artemis的address model比ActiveMQ“Classic”(更以JMS为中心)的地址模型更类似于RabbitMQ。
就JMS而言,我认为你需要的是:
1.一个主题。这类似于RabbitMQ中的“交换”。发送到JMS主题的任何消息都将传递给每个订阅者。这是基本的发布/订阅语义。
1.带有选择器的主题订阅器。正如在#1中提到的,主题上的每个订阅者都会收到发送到该主题的任何消息,但是JMS“选择器”可以用来过滤消息,类似于RabbitMQ中的路由键。
1.消息属性的商定键。为了为主题订阅者创建一个可行的选择器,生产者和订阅者必须就过滤的属性键达成一致。
如果每个订阅都有大量的消息,并且这些消息需要在多个订阅者/消费者之间共享(例如,对于负载平衡/分发),那么您将需要使用JMS“共享订阅”。然而,共享订阅只是JMS 2的一部分,只有ActiveMQ Artemis实现了JMS 2。您不能将ActiveMQ“Classic”用于JMS共享订阅,因为它仅支持JMS 1.1。
ActiveMQ“Classic”和ActiveMQ Artemis都创建服务器端资源(例如,主题、队列等),因此您只需编写JMS应用程序即可。

相关问题