代码之家  ›  专栏  ›  技术社区  ›  Goblin

通知所有使用者消息

  •  2
  • Goblin  · 技术社区  · 6 年前

    我们正在使用rebus4.2.1和RabbitMQ

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

    据我所知(这可能是错误的)-.Publish在IBus接口上应该可以做到这一点(我们已经在MSMQ上运行过了)。

    我对RabbitMQ的工作方式有什么遗漏吗?

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

    EDIT2:mookid8000让我走上了正确的轨道-问题是每个复制品都要求相同的队列。一旦我做出了独特的-一切都开始按预期(和预期)工作。

    1 回复  |  直到 6 年前
        1
  •  2
  •   mookid8000    6 年前

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

    在每个用户中,您只需呼叫

    await bus.Subscribe<YourEvent>();
    

    这将使Rebus从事件类型中生成一个主题字符串,然后将其绑定到订阅服务器的输入队列,然后在发布服务器中

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

    在封面之下,Rebus使用RabbitMQ的“主题交换”交换类型来实现这一点。