当前位置: 首页 > 知识库问答 >
问题:

RabbitMQ头交换与列表

陆承宣
2023-03-14

我有一些问题,试图了解类型标头的交换是如何工作的。

只有一个交换,myExchange

三个队列:

  1. myQueue1
  2. myQueue2
  3. myQueue3

绑定:

    < li >我的兑换=

我希望消息的标题具有多个值;test1、test2、test3 的任意组合(例如:单独 test1、test1 和 test2、test3 和 test2 等)

myQueue3只接收具有MyHeader的消息:[test1、test2、test3]。我希望myQueue3也能获得test1和test2的消息。

myQueue1 只有在它们具有 myHeaders:[test1] 时才会接收消息。我希望 myQueue1 也能获得消息,例如 test1 和 [test1, test2]。

有没有办法实现这种行为?非常感谢。

共有2个答案

华季同
2023-03-14

我同意这些评论,我正在努力实现一些目前不被支持的东西。我将使用路由键。

农飞尘
2023-03-14

对此,我有一招。

绑定:

    < li >我的兑换=

myQueue1将接收标题包含{test1:true}的所有消息。

myQueue2 将接收标头包含的所有消息 {test2: true}。

myQueue3将接收标头包含{test1: true}、{test2: true}或{test3: true}之一的所有消息。

我更喜欢这样,因为路由关键字被限制在255个字节,但是头中元素的数量限制很高。

对于性能,我不知道什么是最好的。

 类似资料:
  • 在Rabbitmq中给出 交换 两个名为default和specific的队列 总共有两个路由密钥。具体而全面* 采用以下方案 我试图实施以下内容(没有成功) > 如果路由键为“all.specific”的邮件到达,则必须路由到特定队列 如果具有路由关键字“all.generic”的消息到达,则必须将其路由到默认队列 我尝试了两种不同的方法 1)交换类型“直接” 我无法在路由键中使用通配符,因此无

  • 我有点迷茫,正在尝试实施话题交流,不确定需要什么。 我想有几个路由键和一个主题交换(默认的amq.topic)。我的钥匙是: 创建customer.app 创建customer.app 客户。*.创建 我希望我的队列是持久的,但是我需要1个“客户”队列还是2个appA和appB队列?我已经弄清楚了我的发布者;连接、交换声明、基本发布。 但我正在与消费者斗争。假设我想打开3个控制台,上面提到的每个路

  • 我正在尝试编写一个应用程序,测试将N个交换绑定到内存、IO等相同队列的效果。 所有测试都使用“主题”交换类型。我遇到的问题是,当我使用多个exchange进行测试时,我没有收到我发布回的所有消息。但是,当我使用1 exchange时,我会收到所有消息。 你知道为什么会这样吗? 谢谢 编辑: 我有一个队列,它使用相同的绑定键绑定到两个“主题”交换: *。系统日志# #。系统错误 我将向每个excha

  • 我一直在尝试使用RabbitMQ,但遇到了以下问题(与此非常类似:RabbitMQ中的主题交换与直接交换)。 我需要密集地广播大约800种类型的消息(因此每种消息类型都会有很多消费者),我想知道以下哪种方法更好: > 创建一个直接交换,在该交换中,消息将使用路由密钥(消息类型名称)发送,每个消费者都将通过绑定了相应路由密钥的临时队列连接到该交换。(因为没有像“key1.key2.*”这样复杂的路由

  • 我有一个场景,我需要执行一系列流程,每个步骤都在独立的应用程序中完成和扩展。我正在为所有交换使用主题交换。当前拓扑如下所示: P- 我们正在“版本化”队列,以处理可能影响消息结构的需求更改。绑定可能如下所示: 步骤1。exchange绑定到步骤1。v1。使用绑定键step1排队。v1 步骤1。exchange绑定到步骤1。v2。使用绑定键step1排队。v2级 还有其他与版本无关的绑定模式也使局部

  • 我是一个新手,试图在java客户端中实现标头交换。我知道这就是“x匹配”绑定参数的用途。当“x匹配”参数设置为“任何”时,只需一个匹配的标头值就足够了。或者,将“x匹配”设置为“所有”要求所有值必须匹配。但是任何人都可以为我提供一个框架代码以更好地理解。