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

cha*_*ows 4 amqp rabbitmq mq bunny

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

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

我想在此交换中添加第三个队列,它接收既不是foo消息也不是消息的bar消息.如果我绑定此队列与#路由关键,我自然会得到我所需要的所有信息,但包括foo的和bar的,我不想要的.

有没有办法路由邮件修补模式NOT *.fooAND NOT *.bar

pin*_*ain 6

如果要捕获与任何绑定不匹配的所有消息,可以使用备用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 * --> []
Run Code Online (Sandbox Code Playgroud)

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