2015-01-17 2 views
3

Я сегодня борюсь с такой же очень простой проблемой с NServiceBus весь день. Проблема в том, что есть много документации о том, как изменить конфигурацию, но почти ничего, что помогает мне узнать, какая конфигурация мне нужна.Как работают имена конечных точек NServiceBus с pub/sub

Есть примеры приложений, и они работают, но нет ничего объясняющего, как они работают, какие ограничения у них есть или как сделать что-то, немного отличающееся от образца. Примеры приложений также представляют собой простоту «Hello world», и в любом реальном приложении вам нужно что-то отличное от примерного приложения, но опять же нет никакой помощи в том, как сделать эти изменения или последствия выбора конфигурации.

Из всего, что очень сложно угадать из документации, это связь между именем конечной точки, сопоставлениями UnicastBusConfig и устойчивостью pub/sub, которая вызывает наибольшее разочарование прямо сейчас.

Является ли имя конечной точки именем очереди MSMQ? Означает ли это, что каждое приложение имеет только одну входную очередь для всех типов сообщений? Добавляет ли сопоставление в UnicastBusConfig сообщение о подписке для отправки издателю или добавляет ли запись подписки в базу данных подписки? Почему вы не можете добавить один и тот же тип сообщения более одного раза в UnicastBusConfig? Почему я не могу просто подписаться на сообщения определенного типа, не зная, с какого сервера они происходят?

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

ответ

4

Является ли имя конечной точки именем очереди MSMQ?

Да.

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

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

Связано ли с добавлением сопоставления в UnicastBusConfig сообщение о подписке, которое должно быть отправлено издателю, или оно добавляет запись подписки в БД подписки?

Ни на самом деле. Раздел UnicastBusConfig предназначен для настройки отношений между типами (или сборками) и конечными точками. Таким образом, на самом деле это не приводит к настройке подписки (как таковой), но в ней сообщается о структуре, откуда будут поступать сообщения (и, следовательно, как, чтобы подписаться на них).

Фактическая подписка создается при запуске системы, и NSB находит обработчик для определенного типа сообщений, соответствующий разделу в UnicastBusConfig (при условии, что автоматическая подписка включена).

Это также работает для отправки команд - раздел конфигурации позволяет фреймворку знать, какой конечной точке отправить() команду.

Почему вы не можете добавить один и тот же тип сообщения более одного раза в UnicastBusConfig?

Поскольку команда может иметь только одну (логическую) конечную точку, которая обрабатывает ее, а событие может иметь только одну (логическую) конечную точку, которая ее публикует.

Почему я не могу просто подписаться на сообщения определенного типа, не зная, с какого сервера они происходят?

Этот вопрос немного сложнее ответить окончательно, поскольку он входит в философию наличия центрального брокера (хаба и спицы) по сравнению с архитектурой в стиле автобуса.

Но вкратце, что-то, где-то нужно знать, как найти издателя, чтобы подписаться на него. Поскольку NServiceBus не имеет центральной брокера или таблицы маршрутизации, клиент должен быть сконфигурирован с учетом конечных точек, которые он потребляет.

+0

Спасибо, это очень полезно. К сожалению, я думаю, что это означает, что NServiceBus не подходит для меня, и, возможно, именно поэтому я испытал с ним столько разочарований. – bikeman868

+0

Не стесняйтесь публиковать сообщения в списке рассылки. Получение помощи в вашей конкретной ситуации может выиграть от более продолжительного разговора, чем может предоставить SO. –

0

Возможно, вы захотите ознакомиться с документацией NServiceBus по телефону http://docs.particular.net/nservicebus/, это достаточно полно и должно предоставить ответы на большинство ваших вопросов.

+0

Это то, что вы ищете http://docs.particular.net/nservicebus/how-pub-sub-works? –

+1

Я провел большую часть дня, читая эту документацию и экспериментируя с кодом. Это «болото деталей», о котором я упоминал в своем первоначальном вопросе. Проблема с документацией заключается в том, что в каждой статье предполагается, что вы уже читали каждую другую статью, а это значит, что вам нужно идти вокруг и вокруг цикла, постепенно наращивая контекст и постепенно понимая больше, просто чтобы добраться до основных принципов, которые могли бы легко можно закрыть во введении или в начале статьи типа. – bikeman868

+0

Я боролся с одними и теми же вещами. И я тоже интегрируюсь с Azure, поэтому чувствую вашу боль. – willem

Смежные вопросы