RabbitMQ标头与列表交换

7vhp5slm  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(3)|浏览(162)

我在试图理解类型 * 头 * 的交换如何工作时遇到了一些问题。
只有一个交易所,myExchange
三个队列:
1.我的队列1
1.我的队列2
1.我的队列3
系结:

  1. myExchange =〉我的队列1(x匹配:任何,我的信头:[测试1])
  2. myExchange =〉我的队列2(x匹配:任何,我的信头:[测试2])
  3. myExchange =〉我的队列3(x匹配:任何,我的信头:[测试1、测试2、测试3])
    我希望消息的标头具有多个值;test1、* test 2 test 3 * 的任意组合(例如:* 单独测试1 测试1 * 和 * 测试2 测试3 * 和 * 测试2 * 等)

***myQueue 3***仅接收具有myHeaders的消息:[*test1,test 2,test 3 *]。我希望***myQueue 3***也能获取 test1 和 * test 2 * 等的消息。
***myQueue 1***仅接收具有myHeaders:[test1]的消息。我希望***myQueue 1***也能获得例如 test1 和[test1,* test 2 *]的消息。

有没有什么方法可以实现这样的行为呢?谢谢

31moq8wy

31moq8wy1#

对于这一点,我有一个诀窍。
系结:

  • myExchange =〉我的队列1(x匹配:任何,测试1:正确)
  • myExchange =〉我的队列2(x匹配:任何,测试2:正确)
  • myExchange =〉我的队列3(x匹配:任何,测试1:真,测试2:真,测试3:正确)

myQueue 1将接收标头包含{test1:false}。
myQueue 2将接收标头包含{test 2:false}。
myQueue 3将接收标头包含此{test1:真},{测试2:true}或{测试3:false}。
我更喜欢这个,因为路由密钥被限制在255字节,但是报头中元素的数量限制非常高。
就性能而言,我不知道什么是最好的。

w8rqjzmb

w8rqjzmb2#

我同意评论,我试图实现的东西,目前是不支持的。我将使用路由密钥。

lndjwyie

lndjwyie3#

可以为同一队列声明多个绑定。
在您的示例中,队列3将具有三个不同的绑定。

相关问题