2008-11-13 12 views
6

Kann mir jemand den Unterschied zwischen diesen drei Vorgehensweisen zur Verarbeitung von Nachrichten erklären, bei denen die Zustellung fehlschlägt?WCF- und MSMQ-Fehlerbehandlung

  • Gift Queue Service
  • Dead Letter Queue Service
  • eine Antwort-Dienstes Fehler zu behandeln

I "Programming WCF" haben, aber ich verstehe nicht wirklich Wann möchten Sie Verwenden Sie einen von diesen über einen anderen, oder wenn es sinnvoll wäre, mehr als einen von ihnen zu verwenden. Vielen Dank!

Antwort

8

Tot und Gift sind zwei verschiedene Konzepte. Giftnachrichten sind Nachrichten, die aus der Warteschlange gelesen werden können, aber Ihr Code weiß nicht, wie er damit umzugehen hat, daher gibt Ihr Code eine Ausnahme. Wenn dies einige Zeit lang dauert, möchten Sie, dass diese Nachricht in eine andere Warteschlange gestellt wird, damit Ihre anderen Nachrichten behandelt werden können. Ein guter Ansatz dafür ist beschrieben on MSDN.

Ein toter Brief ist eine Nachricht, die nicht einmal von der Warteschlange behandelt wird. Das Netzwerk ist beschädigt oder der empfangende MSMQ-Computer wird heruntergefahren. So ähnlich. Die Nachricht wird automatisch nach einiger Zeit von Windows in die Dead-Warteschlange gestellt. Daher ist es ratsam, einen Dienst zu schreiben, der die Warteschlange überwacht.

2

Poison Message-/Dead-Letter-Nachrichtenwarteschlangen werden verwendet, um Nachrichten zu platzieren, die in einer Warteschlange als nicht zustellbar eingestuft wurden und nicht mehr gesendet werden sollen. Sie würden dies tun, wenn Sie die fehlgeschlagenen Nachrichten manuell überprüfen und zu einem späteren Zeitpunkt verarbeiten möchten. Sie verwenden diese Art von Warteschlangen, wenn Sie verhindern möchten, dass fehlerhafte Nachrichten die Leistung Ihres Systems beeinträchtigen, indem Sie es immer wieder neu versuchen.

Auf der anderen Seite würde ein Antwortdienst verwendet werden, um den Absender zu benachrichtigen, dass bei der Verarbeitung der Nachricht ein Fehler aufgetreten ist. In diesem Fall planen Sie in der Regel nicht, die fehlerhafte Nachricht manuell zu verarbeiten, und müssen das System, das die Nachricht gesendet hat, in der Anforderung zurückweisen lassen.

Beachten Sie, dass diese nicht exklusiv sind. Wenn Sie Warteschlangen verwenden, besteht immer die Möglichkeit, dass sich die Nachrichtenserialisierung so weit ändert, dass Nachrichten in der Warteschlange unterbrochen werden. In diesem Fall möchten Sie möglicherweise eine Warteschlange für nicht zustellbare Nachrichten erhalten, selbst wenn Sie einen Antwortdienst verwenden.

+0

Ich schätze die Antwort, aber es ist nicht ganz das, was ich gefragt habe. Zum einen möchte ich den Unterschied zwischen Poison und Dead Letter wissen. Außerdem frage ich eher nach den Diensten, die diese Warteschlangen verarbeiten, als nach den Warteschlangen selbst. – chessguy