Пример паба /подзаголовка NServiceBus и «Дистрибьютор»

#nservicebus #nservicebus-distributor

#nservicebus #nservicebus-дистрибьютор

Вопрос:

Я закончил рассматривать пример паба / Sub для NServiceBus.

Сейчас я пытаюсь разобраться в концепции NServiceBus «Дистрибьютор«.

Сначала я был очень смущен, потому что думал, что какая-то часть примера сопоставлена с «Дистрибьютором». Теперь я начинаю думать, что это не так.

Итак, в примере показаны 2 движущиеся части. Издатель и подписчик. Но на следующей странице показано как минимум 4 движущиеся части.

  1. База данных подписки
  2. Узел издателя (P_1, P_2)
  3. Дистрибьютор
  4. Узел подписчика (S_A_#, S_B_#)

Все это имело большой смысл, пока я не добрался до этого момента. Теперь мне остается только гадать, как эти новые игроки соотносятся с хорошим наглядным примером. (Или есть новый пример, на который мне следует обратить внимание?)

Я прочитал страницы об этом, и все это имеет смысл с концептуальной точки зрения. Но я не вижу, как это работает в реальной жизни / code / example.

На случай, если я слишком расплывчат в своем вопросе, позвольте мне задать более конкретный вопрос: что мне нужно сделать с примером паба / Sub, чтобы он использовал 4 части выше?

Ответ №1:

Если вы возьмете базовый пример паба / Sub, вам нужно добавить в микс еще несколько конечных точек. Каждая конечная точка распространителя будет содержать сообщения от издателя. «За» каждым дистрибьютором будет набор подписчиков, которые также будут вести себя как рабочие (вам нужно добавить конфигурацию дистрибьютора). Каждый набор подписчиков за дистрибьютором будет идентичным. Как только распространители получат работу от издателя, они будут распространять сообщения среди подписчиков.

Чтобы настроить это, я бы добавил в образец 2 дистрибьютора и поместил подписчика 1 за одним дистрибьютором, а подписчика 2 за другим. Сначала убедитесь, что все работает. Затем запустите еще один экземпляр каждого из них (указывая на их соответствующих дистрибьюторов), чтобы вы могли наблюдать за их балансом загрузки. В итоге у вас будет один издатель, два дистрибьютора и всего 4 подписчика. Оттуда вы могли бы добавить другого издателя для полноты картины.

Комментарии:

1. Таким образом, каждый подписчик за Дистрибьютором является избыточным физическим узлом? (Имеется в виду, что не все они получают сообщение, только один из них?)

2. На каждой физической машине может быть несколько процессов. Каждый экземпляр Подписчика будет получать только те сообщения, которые ему передает Дистрибьютор. Комбинация узлов дистрибьютора и N подписчиков функционирует как один логический подписчик.