2008-11-13 14 views
6

Czy ktoś może mi wyjaśnić różnicę między tymi 3 podejściami do przetwarzania komunikatów, które nie dostarczą?Obsługa awarii WCF i MSMQ

  • Poison Kolejka usługowy
  • Martwica List Kolejka
  • Korzystanie z serwisu reakcji obsługiwać awarie

mam „WCF Programming”, ale ja naprawdę nie rozumiem, jeśli będzie użyj jednego z nich zamiast innego lub gdy byłoby sensowne użycie więcej niż jednego z nich. Dzięki!

Odpowiedz

8

Martwe i trucizna to dwie różne koncepcje. Poison wiadomości to wiadomości, które można odczytać z kolejki, ale twój kod nie wie, jak sobie z tym poradzić, więc twój kod daje wyjątek. Jeśli trwa to przez jakiś czas, chcesz, aby ta wiadomość została umieszczona w innej kolejce, aby inne wiadomości mogły być obsługiwane. Dobry apel do tego jest opisany on MSDN.

Martwa litera to wiadomość, która nie jest nawet obsługiwana przez kolejkę. Sieć jest zepsuta lub odbierający komputer MSMQ jest wyłączony. Coś w tym stylu. Komunikat zostanie automatycznie umieszczony w martwej kolejce po pewnym czasie przez system Windows. Dlatego warto napisać usługę, która monitoruje martwą kolejkę.

2

Kolejki komunikatów trucizny/martwe listy służą do umieszczania wiadomości, które zostały określone jako niemożliwe do dostarczenia w kolejce, która nie będzie ich już dostarczać. Zrobiłbyś to, gdybyś chciał ręcznie rzucić okiem na nieudane wiadomości i przetworzyć je później. Korzystasz z tego rodzaju kolejek, gdy chcesz, aby złe wiadomości nie wpływały negatywnie na wydajność systemu, powtarzając je w kółko.

Z drugiej strony usługa reagowania zostanie użyta do powiadomienia nadawcy, że wystąpił błąd podczas przetwarzania komunikatu. Zazwyczaj w tym przypadku nie planujesz ręcznego przetwarzania złej wiadomości i musisz pozwolić systemowi, który wysłał wiadomość, na to, że żądanie zostało odrzucone.

Należy pamiętać, że nie są one wyłączne. Jeśli używasz kolejek, zawsze istnieje szansa, że ​​serializacja wiadomości zmieni się na tyle, aby przerwać wiadomości znajdujące się w kolejce, w którym to przypadku nadal możesz chcieć mieć kolejkę z martwą literą, nawet jeśli używasz usługi odpowiedzi.

+0

Doceniam odpowiedź, ale to nie jest to, o co prosiłem. Przede wszystkim chciałbym poznać różnicę między Trucizną a Martwą literą. Ponadto, bardziej pytam o usługi, które przetwarzają te kolejki, niż o same kolejki. – chessguy