2012-02-17 2 views
2

У меня есть MassTransit ServiceBus, работающий поверх MSMQ. Похоже, что первое сообщение, отправленное по шине, не поступило, а последующие сообщения?Первое сообщение, не прибывающее через служебную шину MSMQ/MassTransit

Есть ли какая-то инициализация, которая должна выполняться в очереди или шине до отправки сообщения?

ответ

3

Это зависит от нескольких настроек в том, сколько времени система должна настроить, прежде чем все будет правильно маршрутизироваться. Если только первое сообщение не может оказаться в нужном месте, вероятно, данные подписки не распространяются повсюду. http://readthedocs.org/docs/masstransit/en/develop/overview/subscriptions.html

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

Если вы используете услугу подписки, то это может занять пару секунд, чтобы получить данные повсюду. Он должен пройти подписку, но подписка отправляется всем на автобусе. Это привязано к SQL db, и латентность к db может повлиять на это время.

Наконец, если вы используете статическую маршрутизацию, то это должно работать немедленно, потому что подписка настроена при запуске.

+0

Не могли бы вы пояснить, может ли первое сообщение также потеряться при перезагрузке пользователя по тем же причинам (когда издатель и служба подписки работают нормально)? – Gebb

+0

Это зависит от того, вызываете ли вы действие отмены подписки при отключении Потребителя. Предполагая, что вы этого не сделаете, никаких изменений статуса подписки не будет объявлено, и сообщения будут доставлены, как ожидалось. Если вы вызовете действие отмены подписки во время отключения службы, тогда будет время, когда подписка не будет существовать. – Travis

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