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

时间:2015-02-05 18:33:57

标签: rabbitmq amqp mq bunny

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

队列A,绑定路由密钥模式匹配*.foo
队列B,与路由键模式匹配*.bar

绑定

我想在此交换中添加第三个队列,该队列接收既不是foo消息也不是bar消息的消息。如果我使用#路由键绑定此队列,我自然会收到我需要的所有邮件,但包括foo&{39}和bar' s 39;不想。

任何方式来路由修补模式NOT *.fooNOT *.bar

的邮件

1 个答案:

答案 0 :(得分:6)

如果要捕获与任何绑定不匹配的所有邮件,可以使用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个绑定但是你想要捕获所有与M绑定不匹配的消息(其中M Dead Letter Exchange和然后将其发布到只有M绑定的自定义交换,然后使用备用Exchange应用案例。但它甚至听起来很生疏,甚至没有考虑性能下降(仅当你有非常高的消息流时才应用)。