アプリケーションでのクロスリージョンフェールオーバーの設定

Mule 4 用 Anypoint MQ Connector バージョン 4.0.7 以降では、標準キューのフェールオーバー機能が提供されます。

この機能はデフォルトでは有効化されていません。 この機能を使用する前に、mq::mq-failover.adocを参照してください。

キューのフェールオーバーを有効にしてプライマリリージョンがダウンすると、プライマリリージョンが使用可能になるまで、データは国外のリージョンに存在する可能性があります。

フェールオーバー機能を使用する手順は、次のとおりです。

アプリケーションでフェールオーバーを有効にする

アプリケーションでフェールオーバー機能を有効にするには、​cross.region.failover.feature.enabled​ システムプロパティを ​true​ に設定します。 このプロパティは、デフォルトでは ​false​ に設定されています。

このフェールオーバープロパティが有効になっている場合、コネクタはプライマリキューとフェイーオーバーキューの両方の処理メッセージを処理します。 中断を防ぐため、アプリケーションは代替キューから直接パプリッシュやコンシュームを行うことはできません。 詳細は、​代替キューから直接メッセージを処理する​を参照してください。

Runtime Manager でこのアプリケーションプロパティを設定する手順は、次のとおりです。

  1. Anypoint Platform にサインインし、ナビゲーションメニューで ​[Runtime Manager]​ をクリックします。

  2. 新しいアプリケーションをデプロイするか、デプロイ済みアプリケーションの設定を変更します。

  3. [Properties (プロパティ)]​ タブで、プロパティの値を指定します。次に例を示します。

    フェールオーバーシステムプロパティが true に設定されている [Properties (プロパティ)] タブ

または、Anypoint Studio の ​[Run Configurations (設定を実行)]​ でプロパティを設定します。 詳細は、​「Mule アプリケーションでのシステムプロパティ」​を参照してください。

代替キューから直接メッセージを処理する

アプリケーションでのフェールオーバーが有効になっている場合、Anypoint MQ Connector は代替キュー (​_fb​ サフィックス付き) を管理し、代替キューで直接パブリッシュ、コンシューム、またはサブスクライブ操作を実行できないようにします。 アプリケーションが代替キューに直接接続すると、Anypoint MQ Connector はエラーを返します。

java.lang.IllegalArgumentException: Using fallback queue directly is not supported

(Anypoint MQ UI から) キューのフェールオーバーを無効にしてアプリケーションを再起動すると、コネクタは代替キューからパブリッシュまたはコンシュームしなくなります。

フェールオーバーを無効にした後に代替キューに残っているメッセージを処理する手順は、次のとおりです。

  1. 代替キューから直接処理するようにアプリケーションを設定します。

    Consume または Subscriber 操作の場合、​[Queue (キュー)]​ 項目を代替キューの名前に設定します。次に例を示します。

    Anypoint Studio の [General (一般)] タブの [Queue (キュー)] 項目にある代替キュー名
  2. アプリケーションが代替キューから直接メッセージをコンシュームできるようにします。

    1. Anypoint Platform にサインインし、ナビゲーションメニューで ​[Runtime Manager]​ をクリックします。

    2. デプロイ済みアプリケーションの設定を変更します。

    3. [Properties (プロパティ)]​ タブで、​cross.region.failover.feature.enabled​ システムプロパティを ​false​ に設定します。次に例を示します。

      フェールオーバーシステムプロパティが false に設定されている [Properties (プロパティ)] タブ

      または、Anypoint Studio の ​[Run Configurations (設定を実行)]​ でプロパティを設定します。 詳細は、​「Mule アプリケーションでのシステムプロパティ」​を参照してください。

代替キューチェックの頻度を設定する

デフォルトでは、プライマリリージョンがダウンしている場合、Anypoint MQ Connector は次のチェックを行います。

  • 新規メッセージの場合、5 分 (300,000 ミリ秒) ごとに 1 回代替キューをチェック

  • 1 分 (60,000 ミリ秒) ごとに 1 回プライマリリージョンがバックアップされているかどうかをプライマリキューでチェック

この動作を変更するには、次のプロパティを設定します。

プロパティ 説明 最小値 最大値 デフォルト値

primary.region.status.check.interval.ms

代替リージョンからの処理時にコネクタがプライマリリージョンの可用性をチェックする頻度

1 分 (60,000 ミリ秒)

15 分 (900,000 ミリ秒)

1 分 (60,000 ミリ秒)

fallback.messages.check.interval.ms

コネクタが受信メッセージの代替キューをチェックする頻度

1 分 (60,000 ミリ秒)

12 時間 (4,320 万ミリ秒)

5 分 (300,000 ミリ秒)

Runtime Manager でこれらのアプリケーションプロパティを設定する手順は、次のとおりです。

  1. Anypoint Platform にサインインし、ナビゲーションメニューで ​[Runtime Manager]​ をクリックします。

  2. 新しいアプリケーションをデプロイするか、デプロイ済みアプリケーションの設定を変更します。

  3. [Properties (プロパティ)]​ タブで、次のプロパティの値 (ミリ秒) を指定します。

    フェールオーバープロパティが指定されている [Properties (プロパティ)] タブ

または、Anypoint Studio の ​[Run Configurations (設定を実行)]​ でこれらのプロパティを設定します。 詳細は、​「Mule アプリケーションでのシステムプロパティ」​を参照してください

チェック間隔の考慮事項

チェック間隔を微調整するためにアプリケーションプロパティ値を設定する方法を決定する場合、次の点を考慮してください。

  • プライマリリージョンのダウンタイム中に代替リージョンにパブリッシュする場合、Anypoint MQ Connector の Publish 操作は、デフォルトでプライマリリージョンが 1 分に 1 回バックアップされているかどうかを確認します。

    フローが Publish 操作をトリガーする頻度が 1 分に 1 回未満の場合、コネクタはこの操作がトリガーされるたびにプライマリリージョンがバックアップされているかどうかを確認します。

    この動作を微調整するには、​primary.region.status.check.interval.ms​ の値を、フローが Publish 操作をトリガーする頻度より大きい値に設定します。

  • フローが Anypoint MQ Connector の Consumer または Subscriber 操作をトリガーすると、コネクタはプライマリキューをチェックする前に、代替キューで新規メッセージをチェックします (デフォルトでは 5 分ごと)。

    フローが Consumer または Subscriber 操作をトリガーする頻度が 5 分ごとよりも短い場合、コネクタはプライマリキューからコンシュームする前に、代替キューで新規メッセージを確認します。

    代替キューをチェックする頻度を減らすには、​fallback.messages.check.interval.ms​ の値を、フローが Consumer または Subscriber 操作をトリガーする頻度より大きい値に設定します。

    このプロパティを高い値に設定すると、代替キュー内のメッセージは頻繁に処理されないため、メッセージは順不同になる可能性があります。