Сервисный автобус - я тупой? - PullRequest
6 голосов
/ 26 августа 2011

Я уже пару месяцев смотрю на Mass Transit, и я действительно заинтригован возможностями. Тем не менее, я, кажется, не могу понять концепции совершенно правильно. Я просмотрел код и просмотрел документацию, но просто не чувствую, что понимаю его.

Примеры в целом показывают;

    Bus.Initialize( sbc =>
                       {
                           sbc.UseMsmq( );
                           sbc.VerifyMsmqConfiguration( );
                           sbc.UseMulticastSubscriptionClient( );
                           sbc.ReceiveFrom( "msmq://localhost/myqueue" );
                       } );

Теперь я понимаю, что это делает, но я не думаю, что мой мозг развивает эту концепцию дальше, чем эта. Вот что я понимаю;

  • Сообщения могут публиковаться из программного обеспечения и подписываться на служебную шину для выполнения действия / действий после получения этого сообщения.
  • Сама служебная шина находится в очереди сообщений (либо RabbitMQ, либо MSMQ в MT)

Я просто хочу немного больше понять об этом. Я не думаю, что получаю его. Нужен ли мне сервер, настроенный на прослушивание? Я настраиваю его в своем программном обеспечении, а затем просто публикую сообщения, которые они получают и обрабатывают изнутри?

1 Ответ

4 голосов
/ 26 августа 2011

Прежде всего, начнем с MassTransit ...

Идея в том, что у вас есть несколько систем связи. Теперь это просто обмен сообщениями и не требует MassTransit. A разговаривает с B. Когда мы начинаем говорить о pub / sub, это может стать более интересным. A публикует сообщение CreateOrder, которое B ожидает. Когда B получает это сообщение CreateOrder, оно может предпринять любые шаги, необходимые для обработки нового заказа. Это оставляет сервисы не связанными, единственная точка взаимодействия - довольно простое сообщение, CreateOrder.

Теперь радость pub / sub заключается в том, что A и B некоторое время ходят взад и вперед, и у нас есть C, который хочет прослушивать CreateOrder сообщения, чтобы он мог подготовить запас для отправки до B завершает все свои задачи. Мы можем сбросить C в шину, он подписывается на сообщение CreateOrder, и ни A, ни B не нужно менять какой-либо код. Это можно сделать, пока они активно отправляют сообщения туда и обратно. Вам нужно обновить одного из участников? Просто остановите этот сервис, вставьте новый и перезапустите его, чтобы он мог выбрать его там, где он остановился.

Если у вас есть еще вопросы по этой теме, я бы попробовал открыть список рассылки. Я хотел бы верить, что мы довольно отзывчивы, когда можем. Кроме того, вы можете задать пару вопросов и книг ...

Шаблоны Enterprise Integration Patterns - отличная книга, даже если она была написана с учетом Java.

...