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

RabbitMQ交换与捕获所有

宗政唯
2023-03-14

在Rabbitmq中给出

  • 交换
  • 两个名为default和specific的队列
  • 总共有两个路由密钥。具体而全面*

采用以下方案

我试图实施以下内容(没有成功)

>

  • 如果路由键为“all.specific”的邮件到达,则必须路由到特定队列

    如果具有路由关键字“all.generic”的消息到达,则必须将其路由到默认队列

    我尝试了两种不同的方法

    1)交换类型“直接”

    我无法在路由键中使用通配符,因此无法路由“所有”。“通用”和“全部”。“另一个_generic”和许多其他传入消息

    2)交换类型“主题”

    它将“all.generic”,“all.another_generic”路由到默认队列,但“all.specific”到达两个队列,为什么我只想访问特定的队列。

    我认为我使用交换和队列的方式是错误的,但我不明白如何以正确的方式实现它,Rabbitmq方式。你能帮我吗?

  • 共有1个答案

    施华奥
    2023-03-14

    在绑定和路由键中找不到您的最佳选择。

    相反,我会考虑其他交换。

    https://www.rabbitmq.com/ae.html

    使用AE,您基本上可以对与发布消息的exchange中的绑定之一不匹配的任何消息进行“全面”交换。

    在您的情况下,您的exchange将只包含<code>all。特定的绑定,用于将消息发送到特定的队列。

    备用交换会将消息直接传递到通用队列。这可以通过主题来完成,以重用相同的路由密钥。或者它可以作为扇出交换来完成,并且只有一个队列绑定到它。

     类似资料:
    • 我有一些问题,试图了解类型标头的交换是如何工作的。 只有一个交换,myExchange 三个队列: myQueue1 myQueue2 myQueue3 绑定: < li >我的兑换= 我希望消息的标题具有多个值;test1、test2、test3 的任意组合(例如:单独 test1、test1 和 test2、test3 和 test2 等) myQueue3只接收具有MyHeader的消息:[

    • 我有点迷茫,正在尝试实施话题交流,不确定需要什么。 我想有几个路由键和一个主题交换(默认的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级 还有其他与版本无关的绑定模式也使局部

    • 我们正在重建消息队列系统。在讨论RabbitMQ交换类型时,我注意到有两种可能的解决方案可以实现路由消息的多播特性。 > < li> 话题交流。通过设置主题交换和特定模式的路由关键字,消息将被路由到指定的队列。即产品。*.根据AMQP规范,这通常是实现发布/订阅模式的交换类型。 报头交换。所谓的“类固醇直接交换”。对于多播消息,它甚至更灵活,因为忽略了路由键,而是每个消息都有“x-match”头,