我正在尝试使用EDA和NServiceBus来解耦两个应用程序。目前,我有一个销售MT和一个库存MT。每当通过销售MT请求销售时,在批准销售MT之前,销售MT将呼叫库存MT,以确保有可用的库存。我想要更改它的工作方式,以便销售MT自动批准它,并发布一个异步"SaleCreated“事件,然后库存MT和计费MT将订阅该事件。然后,如果有任何脱销的商品,库存MT可以在脱机过程中标记销售。
我的问题是我有10个Sales MT实例、5个Inventory MT实例和3个Billing MT实例。所有3个应用程序都在位于10/5/3服务器前面的LoadBalancer之上拥有自己的虚拟IP。因此,基本上我有1个虚拟发布(SaleCreated事件)和2个虚拟订阅(库存和计费订阅)。理想情况下,由销售MT处理的销售应该创建一条SaleCreated事件消息,发送给1个且仅有1个库存MT和1个且仅有一个计费MT。我真的很困惑这是如何工作的,因为我还没有在NServiceBus站点上看到过这种情况的示例。此外,我不希望每个订阅都将所有消息发送到单个分发服务器,因为这将导致一台计算机成为瓶颈。
有没有办法做到这一点?
发布于 2010-07-09 05:53:12
在发布端,您将使用DB订阅存储选项(可在生产配置文件中找到),以便所有发布实例都能看到相同的订阅者列表。在订阅端,您将使用分发服务器来分发传入事件的负载,以便每条消息只被分派到单个实例。请注意,您将为每个订阅者使用一个分发者,因此没有真正的瓶颈,并且分发者不做任何实际工作,因此这不是一个大问题。
https://stackoverflow.com/questions/3198310
复制相似问题