MassTransit Saga - Ошибки и несоответствия

Я реализовал сагу о масстранзите, которая работает как надо, много раз. Однако бывают случаи, когда сообщения попадают в очередь ошибок или просто исчезают. Я использую RabbitMQ.

Я хотел бы знать: 1. Как мне получить сообщение о причине / исключении, из-за которого сообщение попадает в очередь ошибок? (ПРИМЕЧАНИЕ. Моя логика обработчика находится в блоке try-catch, поэтому очевидно, что эти ошибки происходят еще до вызова логики обработчика) 2. Что может быть причиной потери сообщений?

Заранее спасибо.


person Tolu    schedule 28.09.2012    source источник
comment
Я провел небольшое исследование и вижу, что могу настроить ведение журнала с помощью NLog или Log4Net, но я не вижу ни одного примера того, как настроить ведение журнала. Кому-нибудь помочь?   -  person Tolu    schedule 28.09.2012
comment
Список рассылки, вероятно, лучшее место для вопросов: groups.google.com/forum/# ! masstransit-обсудить. Вы также можете посетить сайт документации: masstransit.readthedocs.org/en/master   -  person Travis    schedule 29.09.2012
comment
Спасибо @Travis. Однако, как я отметил в своем ответе ниже, на сайте документации, похоже, нет инструкций по настройке ведения журнала с помощью NLog.   -  person Tolu    schedule 02.10.2012
comment
Если вы хотите сделать запрос на включение этой документации, мы будем рады принять обновления документации, чтобы охватить это.   -  person Travis    schedule 02.10.2012


Ответы (1)


Кажется, я понял это: чтобы получить исключения, настройте NLog (или log4Net), добавьте ссылку на соответствующую библиотеку NLogIntegration и, наконец, при инициализации служебной шины включите sbc.UseNLog (); (для NLog). Похоже, что в сети нет документации, которая бы это освещала. Пришлось выяснить это, посмотрев на методы библиотеки NLogIntegration.

Что касается сообщений, попадающих в очередь ошибок, сообщение об ошибке было «Превышен предел повторных попыток сообщения rabbitmq: // localhost / worker_sagas: 08cf6e3e-d772-e62b-1803-73779fa60000». Видимо, это было вызвано тем, что я использовал репозиторий In-Memory для Saga Persistence. Следовательно, всякий раз, когда процесс, на котором размещена сага, перезапускался, все саги, которые еще не были завершены, вызывали указанную выше ошибку, поскольку их больше не было в репозитории.

person Tolu    schedule 02.10.2012
comment
Правильно, используйте репозиторий NHibernate, если вы хотите, чтобы они жили дольше времени жизни процесса. - person Chris Patterson; 08.10.2012
comment
Спасибо за публикацию. У меня ушло слишком много времени, чтобы узнать, как это использовать. - person kenchilada; 27.11.2012