通知所有消费者消息

时间:2018-09-24 09:03:00

标签: c# rabbitmq rebus rebus-rabbitmq

我们正在使用Rebus 4.2.1和RabbitMQ

我们要实现的是让三个(或更多)实例上的处理程序都对同一条消息做出反应。

据我了解(可能是错误的)-。在IBus界面上发布应该完全做到这一点(并且我们已经在MSMQ上运行它了。)

RabbitMQ的工作方式我缺少什么吗?

(编辑:我认为RabbitMQ中使用的术语是“扇出”样式的消息)

EDIT2:mookid8000使我走上了正确的轨道-问题是每个副本都在请求相同的队列。当我使它变得独一无二时-一切都开始按预期(和预期)进行。

1 个答案:

答案 0 :(得分:2)

使用Rebus + RabbitMQ,这非常简单,因为RabbitMQ对基于主题的发布/订阅消息具有本机支持。

在每个用户中,您只需拨打电话

await bus.Subscribe<YourEvent>();

这将使Rebus生成事件类型之外的主题字符串,然后将其绑定到订阅者的输入队列,然后在发布者中

await bus.Publish(new YourEvent(...));

,然后每个订阅者将在其输入队列中获取事件的副本。

在封面下,Rebus使用RabbitMQ的“主题交换”交换类型来完成这项工作。