gpt4 book ai didi

rabbitmq - Rabbit MQ 过滤

转载 作者:行者123 更新时间:2023-12-04 01:57:24 34 4
gpt4 key购买 nike

我们有一个 RabbitMQ 交换器,它在我们系统的几个组件之间交换消息。

每个组件都是交易所的发布者和订阅者。

我们需要找到一种方法来确保每个应用程序都不会收到它发送到交换中的消息。

例如。

应用 1 发送刷新消息。我们希望这适用于除 App 1 之外的所有交易所订阅者

我可以看到您可以指定路由属性,但这似乎定义了您想要的消息而不是您不想要的消息。

有任何想法吗?

最佳答案

RabbitMQ 无法直接实现您的要求。从 RMQ 的工作方式以及系统的设计方式来看,这有点落后。

也就是说,您无法过滤或“选择性”指定消费者接收的消息。最终, the "selective consumer" is an anti-pattern in RabbitMQ 。一旦消息进入队列,监听该队列的消费者可能会收到该消息(取决于附加的消费者数量等)。

根据我的经验,处理此问题的最佳方法是更改​​您的 RMQ 拓扑和应用程序设计,以便这不会成为问题(可能不可能),或者让您的应用程序知道它发送的是哪条消息,并忽略任何内容它发送。

我认为第一个选项更好(确保良好的应用程序/拓扑设计不会发生这种情况),但第二个选项通常更容易......

为此,您可以向消息中添加自定义属性,例如“publisher-id”或类似属性。让您的消费者代码检查以确保消息的发布者 ID 与其自己的发布者 ID 不匹配。如果它匹配,确认消息而不做任何事。如果不匹配,则正常处理消息。

关于rabbitmq - Rabbit MQ 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34809946/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com