メッセージ キューのジャーナル ストレージ
更新 : 2007 年 11 月
ジャーナル キューを使用して、メッセージを処理する際にメッセージのコピーを保存できます。コンピュータから送信したメッセージのコピーをローカル マシン ジャーナル キューに格納するか、またはキューから削除されたメッセージのコピーをサーバー上のそのキューのジャーナルに格納できます。
ジャーナル ストレージは、メッセージを後で再送する必要がある場合に便利です。たとえば、キューにメッセージを送信してから、配信できなかったときに受信確認 (エラー) を受け取るとします。受信確認メッセージには、元のメッセージの本文は含まれません。その代わりに、ヘッダー情報と、元のメッセージに対応する相関関係 ID が含まれます。ジャーナル記録をオンにしている場合は、この相関関係 ID を使用して、コンピュータのジャーナル キューから元のメッセージを探し、メッセージ オブジェクトを再作成して、再送信できます。
メモ : |
---|
ReceiveByCorrelationId メソッドまたは PeekByCorrelationId メソッドを使用して、相関関係 ID によってメッセージを取得できます。複数のメッセージが同じ相関関係 ID を持つ場合、これらのメソッドはキュー内でその ID を持つ先頭のメッセージを取得することに注意してください。 |
ジャーナル キューに関しては、いくつかの注意点があります。
コンピュータごとに 1 つのグローバル ジャーナル キューがあります。そのコンピュータから送信されたメッセージは、正しく配信されたかどうかにかかわらず、すべてそのジャーナル キューに記録されます。また、各キューには個別に関連付けられたジャーナル キューがあります。
ジャーナルの使用方法を制御するプロパティは 2 つあります。MessageQueue オブジェクトの UseJournalQueue プロパティを設定した場合は、そのキューによって受信されるメッセージに対してジャーナル ストレージが有効になります。そのオブジェクトが送信するメッセージに対してではありません。キューによって送信されたメッセージは、キュー ジャーナルに格納されます。Message オブジェクトの UseJournalQueue プロパティを設定した場合は、システム ジャーナル ストレージが有効になります。つまり、システムから送信されたメッセージは、送信側のシステム キューに格納されます。
ジャーナル キューには、クォータと呼ばれる最大サイズがあります。このサイズは、キューが存在するコンピュータのディスク容量によって制限されます。キューの容量の上限に達すると、ジャーナル キューに送信されるはずのメッセージがシステムに保存されなくなります。この場合、エラーは発生しません。これを防ぐには、ジャーナル キューを定期的に削除する必要があります。詳細については、「方法 : キューの内容をパージする」を参照してください。
ジャーナル キューはサイレントです。つまり、独自の受信確認メッセージを作成したり、削除されたメッセージを配信不能キューに送信したり、タイムアウトを処理したりはしません。
メッセージに対するジャーナル ストレージを設定する方法については、「方法 : ジャーナル キューにメッセージを格納する」を参照してください。