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

时间:2018-04-03 22:39:36

标签: masstransit

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

消息观察可能是一个选项,但这意味着消息永远不会被消费并永远在公交车上闲逛。

有人可以建议在MassTransit的上下文中使用模式吗?

提前致谢。

1 个答案:

答案 0 :(得分:5)

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

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

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

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