Обработка ошибок WCF и MSMQ - PullRequest
7 голосов
/ 14 ноября 2008

Может ли кто-нибудь объяснить мне разницу между этими тремя подходами к обработке сообщений, которые не доставляются?

  • Служба Poison Queue
  • Служба очереди недоставленных сообщений
  • Использование службы ответа для обработки сбоев

У меня есть «Программирование WCF», но я не совсем понимаю, когда вы будете использовать один из них поверх другого или когда имеет смысл использовать более одного из них. Спасибо!

Ответы [ 2 ]

8 голосов
/ 18 февраля 2009

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

Мертвая буква - это сообщение, которое даже не обрабатывается в очереди. Сеть разорвана или принимающий компьютер MSMQ выключен. Что-то вроде того. Сообщение будет автоматически помещено в мертвую очередь через некоторое время Windows. Поэтому желательно написать сервис, который отслеживает мертвую очередь.

2 голосов
/ 14 ноября 2008

Очереди сообщений об отравленных / недоставленных письмах используются для помещения сообщений, которые были определены как недоставленные, в очередь, которая больше не будет пытаться доставить их. Это можно сделать, если вы захотите вручную просмотреть сообщения о сбоях и обработать их позже. Вы используете очереди такого типа, когда хотите, чтобы плохие сообщения не снижали производительность вашей системы, повторяя попытки снова и снова.

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

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

...