2013-12-11 3 views
11

Я использую версию RabbitMQ 3.0.2 & Я вижу сообщение с сообщением около 1000 в очереди ошибок. Я хочу знатьMassTransit с RabbitMQ: Когда сообщение перемещено в очередь ошибок

  1. В какой момент сообщения перемещаются в очереди ошибок?
  2. Есть ли способ узнать, почему какое-то сообщение перемещается в очередь ошибок?
  3. Есть ли способ переместить сообщение из очереди ошибок в обычную очередь?

Спасибо

ответ

7
  1. а) они не десериализации или б) потребитель бросает обработку исключением того, что сообщение пять раз
  2. Не совсем ... Если взглянуть на сообщения в очереди , заголовки полезной нагрузки могут содержать примечание, но я не думаю, что мы это сделали. Если вы включите регистрацию (NLog, log4net и т. Д.), Вы сможете увидеть исключения в своем журнале. Вам нужно будет сопоставить идентификаторы сообщений в этот момент, чтобы выяснить, почему именно.
  3. С помощью MassTransit нет встроенного устройства. В основном потому, что, как представляется, нет большого, общего способа справиться с этим. Каждый хочет вокруг этого процесса. Дрю создал приложение BusDriver (в main MT source repo), которое можно было использовать для перемещения сообщений обратно на соответствующий обмен. Это поведение по умолчанию существует, поэтому вы, по крайней мере, знаете, что что-то не удается, если вы не используете инфраструктуру для ее обработки.
+1

Hi Travis, Спасибо за ответ. В моем случае из 100 сообщений 10 перемещаются в очередь ошибок. Теперь я не понимаю, почему только небольшое сообщение не будет выполнено из-за де-сериализации и почему потребитель выбросит исключение. Я думаю, нам нужно включить ведение журнала, чтобы лучше понять. – SharpCoder

+1

Возможно, что в десериализации есть ошибка, но это нормально, только если вы не используете MT для переноса данных в обмен. Во всех возможных капюшонах ваш потребитель бросает исключение. Удачи, ведение журнала, вероятно, ваш первый шаг к пониманию того, что происходит. Документы должны помочь: http://masstransit.readthedocs.org/en/master/overview/logging.html – Travis

+0

Благодарим вас за разъяснение этого. Но ссылка, которую вы разделили, предназначена для MassTransit, а не для ведения журнала RabbitMQ. Возможно, я ошибаюсь, но я думаю, что мы должны регистрировать ошибки RabbitMQ. – SharpCoder

1

Чтобы добавить ответ Трэвиса, во время моего развития я нашел некоторые другие причины для сообщений, уходящих на очередь ошибок:

  1. Опубликованная тип сообщений не потребитель
  2. саги и потребительское ожидают того же конкретного типа сообщения. Даже если вы попытаетесь дифференцировать использование «Accepts» и «.Selected», как SAGA, так и Consumer не должны быть запрограммированы на получение одного и того же типа сообщений.
+0

Не имея потребителя, он также посылал сообщение в очередь ошибок для меня. – Chrysalis

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