过去几周我一直在学习RabbitMQ。我正在尝试使用“Header”Exchange设置desicision树类型路由。如果匹配,我知道如何把它拼出来。但是我想要一个“全部捕获”队列,如果标题与树中的其他内容不匹配,则只发送给该队列。
所以
Exchange1 -> if header.value1 = "company1" then goto queue "company1"
-> if header.value1 = "company2" then goto queue "company2"
-> if header.value1 didn't match anyone else then goto queue "catch all"
我让前两个很容易理解。但我无法弄清楚如何做“不”或“找不到匹配”。
如果只是设置一个“catch all”而没有任何与之关联的规则,则会在那里发送所有消息,包括那些根据其他规则找到匹配的消息。
答案 0 :(得分:3)
RabbitMQ绑定中没有NOT功能。但是,RabbitMQ提供了一个功能来执行您正在寻找的东西,称为备用Exchange。
您需要在Exchange中设置策略以将消息发送到备用交换机,并且您需要绑定另一个队列(因为您将“全部捕获”)。这个新的交换只会获取之前无法路由的消息,因此可以将其创建为扇出。
您可以在此处找到更多信息:Alternate Exchanges