rabbitmq - 在 RabbitMQ 主题交换中路由与模式不匹配的消息

标签 rabbitmq amqp mq bunny

两个队列使用以下路由键绑定(bind)到主题交换:

队列 A,与路由键模式匹配绑定(bind) *.foo队列 B,与路由键模式匹配绑定(bind) *.bar
我想向这个交换添加第三个队列,它接收既不是 foo 的消息。消息或 bar消息。如果我将此队列与 # 绑定(bind)路由键,我自然会得到我需要的所有消息,但包括foo的和 bar是我不想要的。

路由消息的任何方式修补模式NOT *.fooNOT *.bar ?

最佳答案

如果你想捕获所有不匹配任何绑定(bind)的消息,可以使用 Alternate Exchange 来完成。 .

为现有交换添加备用交换并从该备用交换收集所有消息:

standard workflow --> [main exchange (topic)]
                    |     --> via binding *.foo -->  [foo queue]
                    |     --> via binding *.bar -->  [bar queue]
                    v      
           [alternate exchange (let it be topic too)]
                    --> via binding * --> []

对于更具体的情况,当您有 N 个绑定(bind)但您想捕获所有与 M 个绑定(bind)不匹配的消息(其中 M < N)时,问题会更大,但技术上可以通过 Dead Letter Exchange 完成。然后将其发布到只有 M 绑定(bind)的自定义交换,然后使用备用交换应用案例。但它甚至听起来生疏,甚至不考虑性能下降(仅在消息流非常高时应用)。

关于rabbitmq - 在 RabbitMQ 主题交换中路由与模式不匹配的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28351469/

相关文章:

python - rabbitmq 使用 pika 线程

java - RabbitMQ:快速生产者和慢消费者

ruby - 是否有用于在 RabbitMQ 上列出队列和交换的 API?

java - 将来自 RabbitMQ 的消息转换为字符串/json

java - WebSphere MQ Java 类中的 MQSecurityExit 是什么?

java - 解决 IBM MQ 独立应用程序中的 MQRC 2195 错误

.net - 如何检查RabbitMQ消息队列是否存在?

ubuntu - RabbitMQ 未启动 "failed to create dirty scheduler thread 0"

java.lang.IllegalArgumentException : invalid value in table when trying to create an new connection 异常

jms - Java EE 容器中的同步请求-回复模式