Я пытаюсь разделить два приложения с помощью EDA и NServiceBus. В настоящее время у меня есть МТ продаж и МТ инвентаризации. Каждый раз, когда через Sales MT запрашивается продажа, до того, как она будет одобрена, Sales MT вызовет Inventory MT, чтобы убедиться в наличии свободных запасов. Я хочу изменить способ, которым это работает, чтобы Sales MT просто автоматически одобряла его и публиковала асинхронное событие «SaleCreated», на которое затем подписываются Inventory MT и Billing MT. Затем Inventory MT может пометить продажу в автономном процессе, если есть какие-либо товары, отсутствующие на складе.
Моя проблема в том, что у меня есть 10 экземпляров моего Sales MT, 5 экземпляров моего Inventory MT и 3 экземпляра моего Billing MT. Все 3 приложения имеют свой собственный виртуальный IP-адрес поверх LoadBalancer, который находится перед серверами 10/5/3. Итак, в основном у меня есть 1 виртуальная публикация (события SaleCreated) и 2 виртуальные подписки (подписчики Inventory и Billing). В идеале продажа, которая обрабатывается модулем Sales MT, должна создавать сообщение о событии SaleCreated, которое будет отправлено на 1 и только 1 Inventory MT и 1 и только на один Billing MT. Я действительно не понимаю, как это будет работать, поскольку я не видел примеров этого сценария на сайте NServiceBus. Кроме того, я не хочу, чтобы все сообщения отправлялись одному дистрибьютору для каждой подписки, так как это приведет к тому, что одна машина станет узким местом.
Есть какой-либо способ сделать это?