技术堆栈:
上下文: 我们正试图在RabbitMQ传输上的NServiceBus中实现一个带有智能订阅的哑事件发布者。
然而,NServiceBus' Publish-Subscribe的概念将已发布的事件传递给给定频道上的一个且只有一个接收者。在我们的例子中,给定订阅服务的一个实例。
我犹豫是否列出了短信"模式"因为他们似乎没有特别一致地被命名或描述。但是,我相信我们正在努力实施" Multicast" Enterprise Integration Patterns(Hohpe and Woolf)Book中的Publish-Subscribe Channel消息模式的版本。
问题陈述: 我们的商业案例是:
我们通过保留运行服务实例的记录并将 ConfigurationUpdated 事件(作为NServiceBus中的命令)单独发送给每个人来解决此问题,但Pub-Sub意味着我们应该有愚蠢的发布者和聪明的订阅者,我们的解决方法正好相反......我们的发布者查找每个订阅者的列表并隐式发送给它。订阅者端是否缺少某些配置,允许每个服务的每个实例获取已发布的 ConfigurationUpdated 事件的副本?如果没有,我应该在哪里查看NServiceBus以开始实现这样的功能?路由拓扑,也许?
答案 0 :(得分:1)
我对nservicebus不太熟悉,知道如何使用该工具集,但RabbitMQ实现将是一个"扇出"与每个消费者的队列交换。
绑定到扇出交换的每个队列都将获得该消息的副本。如果每个队列都有一个消费者,那么您将向每个消费者发送该消息的副本。
听起来你有多个消费者连接到同一个队列。也许有一种方法可以告诉nservicebus为每个消费者实例创建一个队列吗?
P.S。你对pub-sub模式是多播是正确的。我在我的RMQ模式电子书(https://leanpub.com/rmq-patterns)中谈到这一点,以及EIP书中所说的内容。