4.2.3. Operator ベースのブローカーデプロイメントで設定されたアドレスへのマッチングアドレス設定
クライアントにメッセージの配信に失敗した場合は、ブローカーがメッセージの配信を継続しようとしない場合があります。無限配信を試行するのを防ぐために、デッドレターアドレスと関連するデッドレターキューを定義できます。指定の数の配信試行後、ブローカーは元のキューから未配信メッセージを削除し、そのメッセージを設定済みのデッドレターアドレスに送信します。システム管理者は、デッド文字キューから未配信メッセージを後で消費してメッセージを検査できます。
以下の例は、Operator ベースのブローカーデプロイメントのデッドレターアドレスおよびキューを設定する方法を示しています。この例では、以下の方法を示しています。
-
メインのブローカーカスタムリソース (CR) インスタンスの
addressSetting
セクションを使用して、アドレスを設定します。 - これらのアドレス設定をブローカーデプロイメントのアドレスに一致させます。
前提条件
- Operator for AMQ Broker 7.9 の最新バージョン(バージョン 7.9.3-opr-3)を使用している必要があります。Operator を最新バージョンにアップグレードする方法については、6章Operator ベースのブローカーデプロイメントのアップグレード を参照してください。
- CR インスタンスを使用して基本的なブローカーデプロイメントを作成する方法を理解する必要があります。詳細は、「基本的なブローカーインスタンスのデプロイ」 を参照してください。
- Operator がマージするか、または CR インスタンスで指定された設定に置き換えるデフォルトのアドレス設定について理解している必要があります。詳細は、「Operator によるアドレス設定の生成方法」 を参照してください。
手順
CR インスタンスを設定して、デッドレターアドレスとキューを追加して、デプロイメント内の各ブローカーの配信されていないメッセージを受信します。
OpenShift コマンドラインインターフェースの使用:
ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。
oc login -u <user> -p <password> --server=<host:port>
-
ダウンロードした Operator インストールアーカイブの
deploy/crs
ディレクトリーに含まれるbroker_activemqartemisaddress_cr.yaml
というサンプル CR ファイルを開きます。
OpenShift Container Platform Web コンソールの使用
- ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとしてコンソールにログインします。
- アドレス CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、Administration → Custom Resource Definitions をクリックします。
- ActiveMQArtemisAddresss CRD をクリックします。
- Instances タブをクリックします。
Create ActiveMQArtemisAddress をクリックします。
コンソールで、YAML エディターが開き、CR インスタンスを設定できます。
CR の
spec
セクションで、未配信のメッセージを受信するデッドレターアドレスおよびキューを指定する行を追加します。以下に例を示します。apiVersion: broker.amq.io/v2alpha2 kind: ActiveMQArtemisAddress metadata: name: ex-aaoaddress spec: ... addressName: myDeadLetterAddress queueName: myDeadLetterQueue routingType: anycast ...
上記の設定では、
myDeadLetterQueue
という名前のデッドレターキューとanycast
ルーティングタイプを持つmyDeadLetterAddress
という名前のデッドレターアドレスを定義します。注記metadata
セクションで、namespace
プロパティーを追加し、OpenShift Container Platform Web コンソールを使用して CR インスタンスを作成する場合にのみ値を指定する必要があります。指定する値は、ブローカーデプロイメントの OpenShift プロジェクトの名前です。アドレス CR インスタンスをデプロイします。
OpenShift コマンドラインインターフェースの使用:
- CR ファイルを保存します。
ブローカーデプロイメントのプロジェクトに切り替えます。
$ oc project <project_name>
アドレス CR を作成します。
$ oc create -f <path/to/address_custom_resource_instance>.yaml
OpenShift Web コンソールの使用
- CR の設定が完了したら、Create をクリックします。
ブローカーデプロイメントのカスタムリソース (CR) インスタンスの設定を開始します。
CR ファイルのサンプルの場合:
-
ダウンロードした Operator インストールアーカイブの
deploy/crs
ディレクトリーに含まれるbroker_activemqartemis_cr.yaml
というサンプル CR ファイルを開きます。
-
ダウンロードした Operator インストールアーカイブの
OpenShift Container Platform Web コンソールの使用
- メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、Administration → Custom Resource Definitions をクリックします。
- ActiveMQArtemis CRD をクリックします。
- Instances タブをクリックします。
Create ActiveMQArtemis をクリックします。
コンソールで、YAML エディターが開き、CR インスタンスを設定できます。
基本的なブローカーデプロイメントの場合、設定が以下のように表示される可能性があります。この設定は、
broker_activemqartemis_cr.yaml
サンプル CR ファイルのデフォルトコンテンツです。apiVersion: broker.amq.io/v2alpha4 kind: ActiveMQArtemis metadata: name: ex-aao application: ex-aao-app spec: version: 7.9.3 deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true
broker_activemqartemis_cr.yaml
サンプル CR ファイルで、image
プロパティーがplaceholder
のデフォルト値に設定されていることを確認します。この値はデフォルトで、image
プロパティーによってデプロイメントに使用するブローカーコンテナーイメージが指定されていないことを示します。Operator が使用する適切なブローカーコンテナーイメージを判別する方法については、「Operator によるコンテナーイメージの選択方法」 を参照してください。注記metadata
セクションで、namespace
プロパティーを追加し、OpenShift Container Platform Web コンソールを使用して CR インスタンスを作成する場合にのみ値を指定する必要があります。指定する値は、ブローカーデプロイメントの OpenShift プロジェクトの名前です。CR の
deploymentPlan
セクションで、以下に示すように単一のaddressSetting
セクションが含まれる新規addressSettings
セクションを追加します。spec: version: 7.9.3 deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true addressSettings: addressSetting:
addressSetting
ブロックにmatch
プロパティーのインスタンスを 1 つ追加します。アドレス一致式を指定します。以下に例を示します。spec: version: 7.9.3 deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true addressSettings: addressSetting: - match: myAddress
match
-
ブローカーが以下の設定を適用するアドレスまたはアドレスのセットを指定します。この例では、
match
プロパティーの値はmyAddress
と呼ばれる単一のアドレスに対応します。
未配信メッセージに関連するプロパティーを追加し、値を指定します。以下に例を示します。
spec: version: 7.9.3 deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true addressSettings: addressSetting: - match: myAddress deadLetterAddress: myDeadLetterAddress maxDeliveryAttempts: 5
deadLetterAddress
- ブローカーが未達のメッセージを送信するアドレス。
maxDeliveryAttempts
メッセージを設定済みのデッドレターアドレスに移動する前にブローカーが行う最大配信試行数。
上記の例では、ブローカーによって、
myAddress
で始まるアドレスにメッセージの配信が 5 回失敗する場合、ブローカーはメッセージを指定の dead letter address (myDeadLetterAddress
) に移動します。
(オプション) 別のアドレスまたはアドレスセットに同様の設定を適用します。以下に例を示します。
spec: version: 7.9.3 deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true addressSettings: addressSetting: - match: myAddress deadLetterAddress: myDeadLetterAddress maxDeliveryAttempts: 5 - match: 'myOtherAddresses*' deadLetterAddress: myDeadLetterAddress maxDeliveryAttempts: 3
この例では、2 つ目の
match
プロパティーの値にはアスタリスクワイルドカード文字が含まれます。ワイルドカード文字では、上記の設定が文字列myOtherAddresses
で始まる任意のアドレスに適用されることを意味します。注記ワイルドカード式を
match
プロパティーの値として使用する場合には、値を単一引用符で囲む必要があります (例:'myOtherAddresses*'
)。addressSettings
セクションの最初にapplyRule
プロパティーを追加し、値を指定します。以下に例を示します。spec: version: 7.9.3 deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true addressSettings: applyRule: merge_all addressSetting: - match: myAddress deadLetterAddress: myDeadLetterAddress maxDeliveryAttempts: 5 - match: 'myOtherAddresses*' deadLetterAddress: myDeadLetterAddress maxDeliveryAttempts: 3
applyRule
プロパティーは、Operator を一致するアドレスまたはアドレスのセットごとに CR に追加する設定を適用する方法を指定します。指定できる値は次のとおりです。merge_all
CR で指定されるアドレス設定と、同じアドレスまたはアドレスのセットに一致するデフォルト設定の両方の場合:
- デフォルト設定で指定されるプロパティー値を CR で指定されたプロパティー値に置き換えます。
- CR またはデフォルト設定で一意で指定されるプロパティー値を保持します。これらはそれぞれ最終マージされた設定の組み込みます。
- CR で指定されるアドレス設定または特定のアドレスセットに一意になるデフォルト設定の場合は、これらを最終でマージされた設定に含めます。
merge_replace
- CR に指定されたアドレス設定と、同じアドレスまたはアドレスセットに一致するデフォルト設定について、最終的なマージされた設定の CR に指定された設定を含めます。それらのプロパティーが CR で指定されていない場合でも、デフォルト設定に指定されたプロパティーを含めないでください。
- CR で指定されるアドレス設定または特定のアドレスセットに一意になるデフォルト設定の場合は、これらを最終でマージされた設定に含めます。
replace_all
- デフォルト設定に指定されたすべてのアドレス設定を CR で指定されたアドレス設定に置き換えます。最後にマージされた設定は、CR で指定したものと完全に対応します。
注記CR に
applyRule
プロパティーを明示的に含ない場合、Operator はmerge_all
のデフォルト値を使用します。ブローカー CR インスタンスをデプロイします。
OpenShift コマンドラインインターフェースの使用:
- CR ファイルを保存します。
CR インスタンスを作成します。
$ oc create -f <path/to/broker_custom_resource_instance>.yaml
OpenShift Web コンソールの使用
- CR の設定が完了したら、Create をクリックします。
関連情報
- OpenShift Container Platform ブローカーデプロイメントのアドレス、キュー、およびアドレス設定のすべての設定オプションについては、「カスタムリソース設定リファレンス」 を参照してください。
OpenShift コマンドラインインターフェース (CLI) を使用して AMQ Broker Operator をインストールしている場合、ダウンロードしたインストールアーカイブおよび抽出したインストールアーカイブには、アドレス設定に関する追加例が含まれています。インストールアーカイブの
deploy/examples
ディレクトリーで、以下を参照してください。-
artemis-basic-address-settings-deployment.yaml
-
artemis-merge-replace-address-settings-deployment.yaml
-
artemis-replace-address-settings-deployment.yaml
-
- スタンドアロンブローカーデプロイメントのアドレス、キュー、および関連アドレス設定に関する包括的な情報は、『AMQ Broker の設定』の「アドレス、キュー、およびトピック」を参照してください。この情報を使用して、OpenShift Container Platform のブローカーデプロイメントの同等の設定を作成できます。
- Open Shift Container Platform の Init Containers の詳細は、Pod をデプロイする前に Init コンテナーを使用したタスクの実行を参照してください。