&引用;“镜子”;同一节点上的rabbitmq队列

&引用;“镜子”;同一节点上的rabbitmq队列,rabbitmq,mirror,mirroring,Rabbitmq,Mirror,Mirroring,我有一个rabbitMQ队列 此队列的使用者是一个应用程序,它从队列中提取消息,并将其插入数据库(经过一些处理) 我还希望能够将这些消息用于其他用途(将它们发送到另一个应用程序进行存储和其他无关的处理) 消费者应用程序是封闭源代码的,因此我无法打开它并更改其行为 我认为实现我的目标的最好方法是镜像兔子队列,并独立地(并且不干扰)使用原始消息流 我已经研究了RabbitMQ镜像,但这似乎是为了在主/从配置中的两个或多个节点上运行而设计的 我想我想要的是: Pre-processor applica

我有一个rabbitMQ队列

此队列的使用者是一个应用程序,它从队列中提取消息,并将其插入数据库(经过一些处理)

我还希望能够将这些消息用于其他用途(将它们发送到另一个应用程序进行存储和其他无关的处理)

消费者应用程序是封闭源代码的,因此我无法打开它并更改其行为

我认为实现我的目标的最好方法是镜像兔子队列,并独立地(并且不干扰)使用原始消息流

我已经研究了RabbitMQ镜像,但这似乎是为了在主/从配置中的两个或多个节点上运行而设计的

我想我想要的是:

Pre-processor application >   rabbit_queue_1  > Normal DB consumer
                           \ 
                            > rabbit_queue_2 > New independent consumer.

我需要两个使用者都获得相同的消息,因此我不希望两个应用程序从同一队列读取消息,也不希望一个新的使用者从队列中读取消息,然后再将其放回队列。

镜像是一种高可用性解决方案,不适合您的要求

改为考虑RabByMQ拆分发布和消费功能。如果现有程序正在发布到RabbitMQ,只需找出当前应用程序队列的路由密钥,并在声明自己的队列时使用该密钥

匹配路由密钥时,已发布的消息将流向使用该密钥的所有队列。特殊情况包括扇出/主题交换,这还允许在路由键中使用通配符

使用直接交换,您的拓扑实际上是:

Pre-processor application >  Direct exchange    > rabbit_queue_1  > Normal DB consumer
                             (via routing key)  \ 
                                                > rabbit_queue_2 > New independent consumer.

还应该注意的是,在队列上存放消息的应用程序也是封闭源代码的。这正是我所寻找的。早期测试看起来很有希望。