Уменьшенная публикация с уменьшенным подписчиком с NServiceBus - PullRequest
1 голос
/ 07 июля 2010

Я пытаюсь отключить два приложения, используя EDA и NServiceBus.В настоящее время у меня есть MT для продажи и MT для инвентаря.Всякий раз, когда продажа запрашивается через MT продаж, перед тем, как она будет одобрена, MT продаж будет вызывать MT инвентаризации, чтобы убедиться, что есть в наличии запас.Я хочу изменить способ, которым это работает, чтобы торговый MT просто автоматически одобрил его и опубликовал асинхронное событие «SaleCreated», на которое затем будут подписаны MT инвентаризации и MT биллинга.В этом случае Inventory MT может пометить продажу в автономном режиме, если есть какие-либо товары, отсутствующие на складе.

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

Есть ли способ сделать это?

1 Ответ

1 голос
/ 09 июля 2010

На стороне публикации вы должны использовать опцию хранения подписки БД (находится в производственном профиле), чтобы все экземпляры публикации видели один и тот же список подписчиков.На стороне подписки вы будете использовать распределителя для распределения загружаемых событий, чтобы каждое сообщение отправлялось только одному экземпляру.Обратите внимание, что вы будете использовать одного дистрибьютора для каждого подписчика, поэтому никаких узких мест нет, и дистрибьютор не выполняет никакой реальной работы, поэтому это не представляет большой проблемы.

...