第12章 複製メッセージの検出


AMQ Broker には、受信する重複メッセージをフィルターする自動複製メッセージ検出が含まれるため、独自の複製検出ロジックをコーディングする必要はありません。

重複検出がないと、クライアントはターゲットブローカーまたは接続に失敗するたびに、送信したメッセージが正常に終了したかどうかを判断できません。たとえば、ブローカーによってメッセージが受信および処理される にブローカーまたは接続に失敗すると、メッセージはそのアドレスに到達することはなく、クライアントは失敗のためにブローカーから応答を受信しません。一方、ブローカーまたは接続がブローカーによって受信および処理された に失敗した場合、メッセージは正しくルーティングされますが、クライアントは応答を受信しません。

さらに、トランザクションを使用して成功を判断することは、このような場合に役立ちません。たとえば、トランザクションコミットの処理中にブローカーまたは接続が失敗する場合、クライアントはメッセージを正常に送信したかどうかを判断できません。

クライアントが最後のメッセージを再送信して仮定の失敗を修正する場合、結果としてアドレスに送信された重複メッセージが表示され、システムに悪影響を及ぼす可能性があります。重複メッセージを送信すると、たとえば、発注書が 2 回満たされる可能性があることを意味します。幸い、{AMQ Broker} は、このような問題の発生を防ぐ方法として、自動複製メッセージ検出を提供します。

12.1. 重複 ID キャッシュの設定

ブローカーは、_AMQ_DUPL_ID プロパティーの受信値のキャッシュを維持します。各アドレスには個別のキャッシュがあります。キャッシュは円形で固定されます。新しいエントリーは、キャッシュ領域の要求に合わせて最も古いエントリーを置き換えます。

注記

キャッシュのサイズを適切に設定してください。以前のメッセージが同じ _AMQ_DUPL_ID を持つ新しいメッセージを受け取る前に id-cache-size メッセージよりも多くのメッセージが到達した場合、ブローカーは重複を検出できません。これにより、両方のメッセージがブローカーによって処理されます。

手順

以下の設定例は、BROKER_INSTANCE_DIR/etc/broker.xml に要素を追加して ID キャッシュを設定する方法を示しています。

<configuration>
  <core>
    ...
    <id-cache-size>5000</id-cache-size> 
1

    <persist-id-cache>false</persist-id-cache> 
2

  </core>
</configuration>
Copy to Clipboard Toggle word wrap
1
キャッシュの最大サイズは、パラメーター id-cache-size で設定します。デフォルト値は 20000 エントリーです。上記の例では、キャッシュサイズは 5000 エントリーに設定されます。
2
persist-id-cachetrue に設定して、受信時に各 ID をディスクに永続化します。デフォルト値は true です。上記の例では、値を false に設定して persistence は無効になっています。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat