gpt4 book ai didi

MassTransit - 发布到所有消费者实例

转载 作者:行者123 更新时间:2023-12-01 10:22:25 28 4
gpt4 key购买 nike

我正在为每个消费者实例寻找一种方法来接收通过 MassTransit 发布到 RabbitMQ 的消息。场景是,我们有多个微服务需要在通知时使缓存无效。 Pub-Sub 在这种情况下不起作用,因为每个服务实例将有 5 个与其相同代码相同类型的消费者,因此只有一个消费者会在传统的 PubSub 中接收消息。

消息观察可能是一种选择,但这意味着消息永远不会被消费并永远在总线上徘徊。

任何人都可以建议在 MassTransit 环境中使用的模式吗?

提前致谢。

最佳答案

您应该在每个服务中创建一个管理端点,它甚至可以是一个临时队列(只需请求一个没有队列名称的接收端点,并且会动态生成一个)。然后,将您的队列失效消费者放在该端点上。每个服务实例都会收到一个唯一的消息实例(当调用 Publish 时),一旦服务退出,这些队列和绑定(bind)将自动删除。

这正是总线端点的工作方式,但在您的情况下,您正在创建一个接收端点,该端点可以具有消费者消息类型绑定(bind),以便接收已发布的消息,每个服务一个副本。

cfg.ReceiveEndpoint(cfg => { ... });

注意队列名没有指定,会自动生成唯一的。

关于MassTransit - 发布到所有消费者实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49640107/

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