4.12. 期限切れのメッセージを期限切れアドレスに移動する


最後の値キュー以外のキューでは、非破壊的なコンシューマーしかない場合、ブローカーはキューからメッセージを削除できず、キューのサイズが徐々に増加します。キューサイズで制約のない増加を防ぐには、メッセージの有効期限が切れるタイミングを設定し、ブローカーが期限切れのメッセージを移動するアドレスを指定します。

4.12.1. メッセージの有効期限の設定

以下の手順では、メッセージの有効期限を設定する方法を説明します。

手順

  1. <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
  2. core 要素で、message-expiry-scan-period を設定して、ブローカーが期限切れのメッセージをスキャンする頻度を指定します。

    <configuration ...>
       <core ...>
          ...
          <message-expiry-scan-period>1000</message-expiry-scan-period>
          ...

    前述の設定に基づいて、ブローカーは 1000 ミリ秒ごとに期限切れのメッセージのキューをスキャンします。

  3. 一致するアドレスまたは一連のアドレスaddress-setting 要素で、有効期限切れのアドレスを指定します。また、メッセージの有効期限を設定します。以下に例を示します。

    <configuration ...>
       <core ...>
          ...
          <address-settings>
             ...
             <address-setting match="stocks">
                ...
                <expiry-address>ExpiryAddress</expiry-address>
                <expiry-delay>10</expiry-delay>
                ...
             </address-setting>
             ...
          <address-settings>
    <configuration ...>
    expiry-address
    一致するアドレスや一連のアドレスの有効期限。前述の例では、ブローカーは stocks アドレスに対する期限切れメッセージを ExpiryAddress と呼ばれる期限切れアドレスに送信します。
    expiry-delay

    デフォルトの有効期限を使用するメッセージにブローカーが適用される有効期限 (ミリ秒単位)。デフォルトでは、メッセージの有効期限は 0 で、有効期限がないことを意味します。デフォルト以上の有効期限が設定されているメッセージに対しては、expiry-delay は効果がありません。

    例えば、先ほどの例のように、アドレスの expiry-delay10 に設定したとします。デフォルトの有効期限が 0 のメッセージがこのアドレスのキューに到着した場合、ブローカーはメッセージの有効期限を 0 から 10 に変更します。しかし、有効期限を 20 に設定している別のメッセージが到着した場合、その有効期限は変更されません。expiry-delay を -1 に設定した場合、この機能は無効になります。デフォルトでは、expiry-delay-1 に設定されます。

  4. また、expiry-delay に値を指定する代わりに、expiry delay の最小値と最大値を指定することもできます。以下に例を示します。

    <configuration ...>
       <core ...>
          ...
          <address-settings>
             ...
             <address-setting match="stocks">
                ...
                <expiry-address>ExpiryAddress</expiry-address>
                <min-expiry-delay>10</min-expiry-delay>
                <max-expiry-delay>100</max-expiry-delay>
                ...
             </address-setting>
             ...
          <address-settings>
    <configuration ...>
    min-expiry-delay
    ブローカーがメッセージに適用される最小有効期限 (ミリ秒単位)。
    max-expiry-delay

    ブローカーがメッセージに適用される最大有効期限 (ミリ秒単位)。

    ブローカーは、以下のように min-expiry-delaymax-expiry-delay の値を適用します。

    • デフォルトの有効期限が 0 のメッセージに対して、ブローカーは有効期限を指定された値の max-expiry-delay に設定します。max-expiry-delay の値を指定していない場合、ブローカーは指定された min-expiry-delay の値に満了時間を設定します。min-expiry-delay の値を指定しない場合、ブローカーはメッセージの有効期限を変更しません。
    • max-expiry-delay の値を上回る有効期限のあるメッセージの場合、ブローカーは有効期限を max-expiry-delay の指定値に設定します。
    • 有効期限が min-expiry-delay の値以下のメッセージに対して、ブローカーは有効期限を指定された min-expiry-delay の値に設定します。
    • min-expiry-delay および max-expiry-delay の値の間に有効期限のあるメッセージの場合、ブローカーはメッセージの有効期限を変更しません。
    • expiry-delay の値 (すなわちデフォルト値の -1 以外) を指定すると、min-expiry-delay および max-expiry-delay に指定する値が上書きされます。
    • min-expiry-delaymax-expiry-delay の両方のデフォルト値は -1 (つまり無効) です。
  5. 設定ファイルの address 要素で、以前に expiry-address に指定したアドレスを設定します。このアドレスにキューを定義します。以下に例を示します。

    <addresses>
        ...
        <address name="ExpiryAddress">
            <anycast>
                <queue name="ExpiryQueue"/>
            </anycast>
        </address>
        ...
    </addresses>

    前述の設定例では、期限切れキュー ExpiryQueue と期限切れアドレス ExpiryAddress を関連付けています。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.