キューの管理

Runtime Manager の ​[Queues (キュー)]​ タブから、仮想マシン (VM) または段階的なイベント駆動型アーキテクチャ ( SEDA​) のキューを、デプロイされたアプリケーションのフロー内で表示および制御できます。

キューは、CloudHub ワーカーにデプロイされたアプリケーションでのみ使用可能です。Runtime Manager からローカルサーバーにデプロイするアプリケーションでは使用できません。詳細は、​「デプロイメントオプション」​を参照してください。

QueuesTab

CloudHub では、フロー内から自動的にキューが検出され、​[Queues (キュー)]​ タブにリストされます。

基になるアプリケーションに一切変更を加えずに、以下を行うことができます。

  • 各キューでキューに格納されているメッセージと送信中のメッセージの数を確認する。

  • 過去 24 時間のキューのスループットをスナップショットとして表示する。

  • キューで待機中のすべてのメッセージをクリアする。

また、永続的なキューの保存データの暗号化を有効にすることもできます。これにより、永続的なキューに書き出される共有アプリケーションデータは必ず暗号化されます。

ユースケース

[Queues (キュー)]​ タブは、次のようなユースケースで役立ちます。

  • アプリケーションのキューを実行時に可視化したい。

  • メッセージが期待どおりにキューを通過しているかどうかを確認するためにアプリケーションをテストする。

  • アプリケーションがメッセージの処理で停滞しており、問題を解決するためにそのキューだけメッセージを消去したい。

キューを有効にする

キューを有効にする手順は、次のとおりです。

  1. 1 つ以上のキューが含まれる CloudHub にアプリケーションをデプロイします。

    「VM Connector」​を参照してください。

  2. Runtime Manager で、アプリケーションをクリックし、​[Manage Application (アプリケーションを管理)]​ をクリックします。

  3. [Persistent queues (永続的なキュー)]​ のチェックボックスをクリックします。

  4. アプリケーションをデプロイするときにこの設定を有効にする場合は、​[Deploy Application (アプリケーションをデプロイ)]​ をクリックします。
    既存のアプリケーションを更新する場合は、​[Apply Changes (変更を適用)]​ をクリックします。

    PersistentQueuesSetOnDeploy

キューの表示

[Persistent queues (永続的なキュー)] を有効にした後、左ナビゲーションメニューの ​[Queues (キュー)]​ をクリックします。アプリケーション内のキューがアプリケーションに表示される順序でリストされます。

CHQConsole

各キューの名前は、関連付けられた VM エンドポイントの ​path​ 属性によって、または SEDA キューの場合はフロー名から判断されます。

  • [Queued (キュー内)]​ 列には、アプリケーションの各キューで現在待機中のメッセージ数が表示されます。

  • [In-Flight (インフライト)]​ 列には、そのキューの後にフローで処理中のメッセージ数が表示されます。

    インフライトメッセージは処理が完了するまでまだキュー内にあり、完了後にキューから削除されます。

  • [Processed Messages (処理済みメッセージ)]​ 列には、過去 24 時間に各キューを通過して処理されたメッセージ数を表すサムネイルグラフが表示されます。

[Queued (キュー内)]​ 列と ​[In-Flight (インフライト)]​ 列は 5 秒ごとに更新され、​[Processed Messages (処理済みメッセージ)]​ のグラフは 5 分ごとに更新されます。

キューのクリア

1 つまたは複数のキューをクリアするには、クリアするキューのチェックボックスをオンにしてから ​[Clear (クリア)]​ をクリックします。

CHQClearQ

Runtime Manager は、クリアするキューとこのプロセスの所要時間を確認する警告メッセージを表示します。​[Clear Queues (キューをクリア)]​ をクリックして続行します。

CHQClear

確認した後、選択したキューにはクリアプロセスが完了するまで「Clearing queue in progress (キューをクリアしています)」メッセージが表示されます。

CHQClearInProgress

キューをクリアすると、キュー内の待機中メッセージとインフライトメッセージがすべて消去されます。キューがクリアされると、キューは直ちにメッセージの受け入れを再開します。

永続的なキュー内の保存データの暗号化

すべての永続的なキューで保存時のデータの暗号化を有効にできます。この機能を有効にすると、永続的なキューに書き込まれる共有アプリケーションデータが暗号化され、セキュリティとコンプライアンスのニーズを満たすことができます。

有効化 + 暗号化
暗号化を有効にして、その後無効にすると、以前に暗号化されているメッセージは読み取り不可になります。

Batch コンポーネントと永続的なキュー

Mule アプリケーションで Batch コンポーネントおよび永続的なキューを使用している場合、バッチレコードが複数回処理されることがあります。 すべてのバッチレコードは Amazon SQS に保存され、デフォルトではメッセージの表示が 70 秒に設定されています。 バッチプロセスの実行時間が 70 秒を超える場合、バッチプロセスは同じメッセージを再度認識して、メッセージを複数回処理することがあります。

この問題を回避するには、アプリケーションの ​[Settings (設定)]​ ページの ​[Properties (プロパティ)]​ タブで ​persistent.queue.min.timeout​ システムパラメーターを大きな値に設定します。 たとえば、バッチプロセスの完了まで 30 分かかる場合、値を ​persistent.queue.min.timeout=2700000​ ミリ秒 (45 分) に設定します。 最大値は 43000000 ミリ秒 (12 時間) です。

制限事項

アプリケーションで永続的なキューを有効にする場合は、次の点に注意してください。

  • 永続的なキューでは 1 回のみのメッセージ配信は保証されません。重複するメッセージが送信される場合もあります。1 回のみのメッセージ配信が重要なユースケースの場合、永続的なキューを有効にしないでください。

  • [Queues (キュー)] タブ​を使用してキューをクリアする場合、キューのクリアプロセス中にキューに送信された新しいメッセージは失われる可能性があります。

  • 永続的なキューを有効にすると、パフォーマンスへの影響があります。小さなメッセージ (50kb 以下) をキューに追加するには 10 ~ 20 ミリ秒 (ms) かかります。一方で、同じメッセージをキューから削除するのには 70 ~ 100ms かかることがあります。