1

我正在尝试使用 EDA 和 NServiceBus 解耦两个应用程序。目前,我有一个销售 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 站点上看到这种情况的示例。此外,我不希望每个订阅都将所有消息发送到单个分发器,因为这会导致一台机器成为瓶颈。

有没有办法做到这一点?

4

1 回答 1

1

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

于 2010-07-08T21:53:11.500 回答