Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jms RabbitMQ扇出交换(虚拟对等)_Jms_Rabbitmq_Activemq - Fatal编程技术网

Jms RabbitMQ扇出交换(虚拟对等)

Jms RabbitMQ扇出交换(虚拟对等),jms,rabbitmq,activemq,Jms,Rabbitmq,Activemq,出于以下几个原因,我正在考虑用RabbitMQ替换ActiveMQ。我目前拥有多个服务,每个服务都能够发布事件(它们将这些事件发布到AMQ中的特定VirtualPic)。每个服务还能够使用来自其他服务的消息。消费者被设置为作为消费者订阅VirtualPic上的队列 这使我能够将消息分散到多个队列(类似主题的功能),同时保留队列的好处(负载平衡和持久性) 看起来这大致相当于RabbitMQ的扇出交换。然而,我发现ActiveMQ非常有用的一点是,生产者不需要了解消费者。它只是发布到虚拟主题。在Ra

出于以下几个原因,我正在考虑用RabbitMQ替换ActiveMQ。我目前拥有多个服务,每个服务都能够发布事件(它们将这些事件发布到AMQ中的特定VirtualPic)。每个服务还能够使用来自其他服务的消息。消费者被设置为作为消费者订阅VirtualPic上的队列

这使我能够将消息分散到多个队列(类似主题的功能),同时保留队列的好处(负载平衡和持久性)

看起来这大致相当于RabbitMQ的扇出交换。然而,我发现ActiveMQ非常有用的一点是,生产者不需要了解消费者。它只是发布到虚拟主题。在RabbitMQ中,当创建交换时,我似乎需要一个队列的最终列表来将消息发布到

tl;dr


RabbitMQ中是否存在与ActiveMQ的虚拟主题等效的路由方案,以便我可以生成到主题的消息,并将其分发到从该虚拟主题创建的任何队列,不需要在RMQ中的某个地方使用硬编码的路由方案?

我在发布了这个问题后意识到,这样做非常简单(不确定为什么我以前从未想过)

我从错误的方向看问题,想知道如何让发布者自动为收件人配置队列——这不是解决这个问题的正确方法


相反,我让订阅者在启动时将自己绑定到发布者用户提供的交换,这提供了我正在寻找的控制反转(发布者不需要知道关于其消费者的任何信息).

我一直在想,在ActiveMQ中,RabbitMQ相当于
主题
,但我仍然没有意识到
扇出交换
是如何做同样的事情的。在ActiveMQ中,
主题
可以有多个订阅者。在RabbitMQ中,
扇出交换可以广播到多个队列。但是,如果任何接收队列都有多个使用者,那么这些使用者中只有一个可以从该队列中获取消息。这是否意味着
扇出交换
仅在每个队列仅由一个使用者/订阅者使用时才像真正的
主题
一样工作?作为旁白,您能否解释一下为什么要从ActiveMQ迁移到RabbitMQ?我正在考虑转向另一个方向,主要是为了能够使用AWS管理的ActiveMQ实例,我很想知道您是否在使用ActiveMQ时遇到了任何问题。ActiveMQ的操作负担远远超过了它的实用性。我们没有使用ActiveMQ提供的重要组件,在ActiveMQ中处理复制/集群要痛苦得多。此外,我们过去曾被不明原因的维修噩梦所咬。老实说,我相信它已经走了很长一段路,我相信AWS的产品比我们所能提供的更稳定。