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

Kno*_*per 3 masstransit

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

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

谁能建议在MassTransit上下文中使用的模式?

提前致谢。

Chr*_*son 6

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

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

cfg.ReceiveEndpoint(host, cfg => { ... });
Run Code Online (Sandbox Code Playgroud)

请注意,未指定队列名称,队列名称将自动唯一地生成。