Что означает сообщение об отравлении MSMQ? - PullRequest
0 голосов
/ 15 февраля 2019

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

Я прочитал, что это сообщение, которое вы не можете использовать, но это означает, что вы можете Peek () и посмотретьдетали, но не Receive () или что?

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

Что вы думаете?Я совершенно не прав?

1 Ответ

0 голосов
/ 06 марта 2019

Раньше я имел дело с ядовитыми сообщениями MSMQ, тьфу!Я бы сказал, что ваше определение близко.

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

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

Вот несколько советов и информации по обработке ядовитых сообщений .

...