4.13. 配信されていないメッセージをデッドレターアドレスへ移行


クライアントにメッセージの配信に失敗した場合は、ブローカーがメッセージの配信を継続しようとしない場合があります。無限配信を試行するのを防ぐために、dead letter address と 1 つ以上の dead letter queuesを定義できます。指定の数の配信試行後、ブローカーは元のキューから未配信メッセージを削除し、そのメッセージを設定済みの dead letter アドレスに送信します。システム管理者は、デッド文字キューから未配信メッセージを後で消費してメッセージを検査できます。

指定のキューに dead letter アドレスを設定しない場合、ブローカーは指定された数の配信試行後にキューから未配信メッセージを完全に削除します。

dead letter キューから消費される配信されていないメッセージには、以下のプロパティーがあります。

_AMQ_ORIG_ADDRESS
メッセージの元のアドレスを指定する string プロパティー
_AMQ_ORIG_QUEUE
メッセージの元のキューを指定する string プロパティー

4.13.1. デッドレターアドレスの設定

以下の手順は、デッドレターアドレスと関連するデッドレターキューを設定する方法を説明します。

手順

  1. <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
  2. キュー名と一致する <address-setting> 要素で、デッドレターのアドレス名と配信試行回数の最大値を設定します。以下に例を示します。

    <configuration ...>
       <core ...>
          ...
          <address-settings>
             ...
             <address-setting match="exampleQueue">
                <dead-letter-address>DLA</dead-letter-address>
                <max-delivery-attempts>3</max-delivery-attempts>
             </address-setting>
          ...
          <address-settings>
    <configuration ...>
    match
    ブローカーがこの address-setting セクションの設定を適用するアドレス。<address-setting> 要素の match 属性には、ワイルドカード式を指定できます。ワイルドカード式を使用すると、<address-setting> 要素に設定されたデッドレター設定を一致する一連のアドレスに関連付ける場合に便利です。
    dead-letter-address
    dead letter アドレスの名前。この例では、ブローカーは未配信メッセージをキュー exampleQueue から dead letter address(DLA) に移動します。
    max-delivery-attempts
    配信不能メッセージを設定済みの dead letter アドレスに移動するまでの、ブローカーによる配信試行の最大数。この例では、ブローカーは配信に失敗した 3 回失敗した後、未配信メッセージを dead letter address に移動します。デフォルト値は 10 です。ブローカーが再配信の試行を無限にするには、-1 の値を指定します。
  3. addresses セクションに、dead letter アドレス (DLA) の address 要素を追加します。dead letter キューを dead letter アドレスに関連付けるには、queue の名前を指定します。以下に例を示します。

    <configuration ...>
       <core ...>
          ...
          <addresses>
             <address name="DLA">
                <anycast>
                   <queue name="DLQ" />
                </anycast>
             </address>
          ...
          </addresses>
       </core>
    </configuration>

上記の設定では、DLQ という名前の dead letter キューを dead letter アドレス (DLA) に関連付けます。

関連情報

4.13.2. デッドレターキューの自動作成

一般的なユースケースは、元のアドレスに従って配信されていないメッセージを分離することです。たとえば、配信不能メッセージを stocks というアドレスから、DLQ.stocks という dead letter キューが関連付けられている DLA.stocks という dead letter キューにルーティングすることを選択できます。同様に、orders というアドレスから配信不能メッセージを DLA.orders という dead letter アドレスにルーティングすることもできます。

このタイプのルーティングパターンにより、未配信のメッセージを追跡、検査、および管理が容易になります。ただし、このようなパターンは、主に自動作成されたアドレスおよびキューを使用する環境に実装するのが困難です。このタイプの環境のシステム管理者は、アドレスおよびキューを手動で作成するのに必要な追加の作業を必要としない可能性があります。

解決策として、次の手順に示すように、未配信のメッセージを処理するための宛先とキューを自動的に作成するようにブローカーを設定できます。

前提条件

手順

  1. <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
  2. 一致したキューまたはキューのセットのデッドレターアドレスを定義するために追加した <address-setting> 要素を見つけます。以下に例を示します。

    <configuration ...>
       <core ...>
          ...
          <address-settings>
             ...
             <address-setting match="exampleQueue">
                <dead-letter-address>DLA</dead-letter-address>
                <max-delivery-attempts>3</max-delivery-attempts>
             </address-setting>
          ...
          <address-settings>
    <configuration ...>
  3. <address-setting> 要素に、dead letter リソース (つまり、アドレスとキュー) を自動的に作成するようブローカーに指示する設定項目と、これらのリソースの命名方法を追加します。以下に例を示します。

    <configuration ...>
       <core ...>
          ...
          <address-settings>
             ...
             <address-setting match="exampleQueue">
                <dead-letter-address>DLA</dead-letter-address>
                <max-delivery-attempts>3</max-delivery-attempts>
                <auto-create-dead-letter-resources>true</auto-create-dead-letter-resources>
                <dead-letter-queue-prefix>DLQ.</dead-letter-queue-prefix>
                <dead-letter-queue-suffix></dead-letter-queue-suffix>
             </address-setting>
          ...
          <address-settings>
    <configuration ...>
    auto-create-dead-letter-resources

    ブローカーが dead letter アドレスおよびキューを自動的に作成し、配信不能メッセージを受信するかどうかを指定します。デフォルト値は false です。

    auto-create-dead-letter-resourcestrue に設定されている場合、ブローカーは dead letter アドレスと関連する dead letter キューを定義する <address> 要素を自動的に作成します。自動作成された <address> 要素の名前は、<dead-letter-address> に指定する name の値と一致します。

    ブローカーが自動作成された <address> 要素で定義する dead letter キューには、multicast ルーティングタイプがあります。デフォルトでは、ブローカーが dead letter キューに名前を付け、配信不能メッセージの元のアドレス (stocks など) を照合します。

    ブローカーは、_AMQ_ORIG_ADDRESS プロパティーを使用する dead letter キューのフィルターも定義します。このフィルターは、dead letter キューが対応する元のアドレスに送信されるメッセージのみを受け取るようになります。

    dead-letter-queue-prefix

    ブローカーにより、自動作成された dead letter キューの名前に適用される接頭辞。デフォルト値は DLQ です。

    接頭辞値を定義するか、デフォルト値をそのまま使用すると、配信不能キューの名前は接頭辞と元のアドレスを連結したものになります (例: DLQ.stocks)。

    dead-letter-queue-suffix
    ブローカーにより、自動作成された dead letter キューに適用される接尾辞。デフォルト値は定義されていません (つまり、ブローカーは接尾辞を適用しません)。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.