具有RabbitMQ传输的NServiceBus多播发布-订阅通道
技术堆栈:具有RabbitMQ传输的NServiceBus多播发布-订阅通道,rabbitmq,nservicebus,messaging,publish-subscribe,Rabbitmq,Nservicebus,Messaging,Publish Subscribe,技术堆栈: .Net 4.6.1 Erlang 18.3 语言:C#6 N服务总线6 RabbitMQ 3.6.3 视窗7 上下文: 我们正在尝试在RabbitMQ传输上的NServiceBus中使用智能订阅实现哑事件发布器 所有感兴趣的接收者都订阅了一个活动 发布者将事件发布到事件频道 所有订阅者都会收到事件的副本 请注意,我并没有说每种类型的订阅者都会收到消息的副本。如果有多个服务实例正在运行,并且它们都具有对事件的活动订阅,则订阅服务的每个实例都应获得消息的副本 然而,NService
- .Net 4.6.1
- Erlang 18.3
- 语言:C#6
- N服务总线6
- RabbitMQ 3.6.3
- 视窗7
我们通过保存运行服务实例的记录并将ConfigurationUpdated事件(作为NServiceBus中的命令)分别发送给每个实例来解决这个问题,但Pub-Sub意味着我们应该有哑发布者和智能订阅者,我们的解决方法正好相反。。。我们的发布者查找每个订阅者的列表并隐式发送给它。订户端是否缺少一些配置,这些配置允许每个服务的每个实例获得已发布的ConfigurationUpdate事件的副本?如果没有,我应该在NServiceBus中的什么地方开始实现这样的功能?路由拓扑,也许?我对nservicebus不太熟悉,不知道如何使用该工具集,但RabbitMQ实现将是一个“扇出”交换,每个使用者都有一个队列 绑定到扇出交换的每个队列将获得消息的副本。如果每个队列都有一个使用者,那么您将向每个使用者发送消息的副本 听起来好像有多个使用者连接到同一队列。也许有一种方法可以告诉nservicebus为每个使用者实例创建一个队列
p、 你说得对,酒吧子模式是多播的。我在我的RMQ模式电子书()中谈到了这一点,这也是EIP的书中所说的 我们从Special得到的答复是,他们故意不支持这种行为。我不明白为什么。他们不想让你“传达所有的信息”,他们认为一个活动通常应该有一个出版商。他们建议我们在应用程序中使用Redis,这可能是正确的答案。然而,我们的潜在客户此时不想支持基础设施,因此我们构建了一个多播消息代理,向每个收件人发送命令。很难看,但它工作非常可靠。谢谢你叫我进来@我和你有同样的问题。在使用邮件代理之前,您是否看过MassTransit?我将对此进行调查,看看它是否支持这一点behaviour@bayological我们确实看过MassTransit,但它是在这项工作之前,并且已经决定使用NServiceBus。我们没有针对这一需求重新评估MassTransit,因此我无法建议您它是否支持我们想要的行为。很抱歉