使用NServiceBus扩展订阅的扩展出版物

时间:2010-07-07 19:52:28

标签: nservicebus nservicebus-distributor

我正在尝试使用EDA和NServiceBus解耦两个应用程序。目前,我有销售MT和库存MT。每当通过销售MT要求销售时,在批准销售MT之前,销售MT将调用库存MT以确保有可用库存。我想改变它的工作方式,以便Sales MT只是自动批准它,并发布一个异步“SaleCreated”事件,然后Inventory MT和Billing MT将订阅。如果有任何缺货商品,库存MT可以在离线流程中标记销售。

我的问题是我有10个销售MT实例,5个库存MT实例和3个我的Billing MT实例。所有3个应用程序都在位于10/5/3服务器前面的LoadBalancer之上拥有自己的虚拟IP。所以基本上我有1个虚拟发布(SaleCreated事件)和2个虚拟订阅(Inventory和Billing订阅者)。理想情况下,由销售MT处理的销售应创建一个SaleCreated事件消息,以便发送给1个且仅1个库存MT,以及1个且仅一个账单MT。我真的很困惑这是如何工作的,因为我还没有在NServiceBus网站上看到过这个场景的例子。此外,我不希望每个订阅都将所有消息发送到单个分发服务器,因为这会导致一台计算机成为瓶颈。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

在发布方面,您将使用数据库订阅存储选项(在生产配置文件中找到),以便所有发布实例都能看到相同的订阅者列表。在订阅方,您将使用分发服务器分发进入的事件的负载,以便每条消息仅分发到单个实例。请注意,您为每个订阅者使用一个分发服务器,因此没有真正的瓶颈,并且分发服务器不执行任何实际工作,因此这不是一个问题。

相关问题