2

非トランザクション キューを使用して WCF の NetMsmqBinding をテストしています。キューから読み取る部分であるサービスが閉じられると、メッセージが失われることがあることがわかりました。

たとえば、番号 1 から 10 のメッセージを含むキューがあり、再起動する前に最初の 5 つのメッセージ (1、2、3、4、5) を読み取ることができる場合、残りのメッセージは次のようになります。 (7、8、9、10)。'6'、サービスが終了する前に受信する予定だったメッセージが失われました。

これは、非トランザクション キューを使用しているためですか? トランザクションに移行せずにこれらのメッセージが失われるのを防ぐ方法はありますか?

ありがとう

4

1 に答える 1

0

トランザクション キューを使用できない場合、メッセージの損失を防ぐ別の解決策は、1 つ以上の冗長なキュー チャネルを一斉に実行することです。

これが意味することは、メッセージを 1 回ではなく N 回送信することです。その後、各メッセージは N 回同時に処理され、最終的な結果として、メッセージはドロップされません。

これが機能する理由は、各処理チャネルが不定期にメッセージをドロップする可能性がありますが、N 個の処理チャネルすべてが同じメッセージをドロップする可能性は低いためです。

確認しなければならない唯一のことは、システムが追加されたボリュームを処理でき、メッセージをべき等に処理できることです。

于 2012-08-29T07:08:57.407 に答える