Flex Gateway新着情報
Governance新着情報
Monitoring API Managerキューはメッセージの一時ストレージ領域です。Anypoint Platform では、キュー、FIFO キュー、デッドレターキューを作成できます。Anypoint Studio でキューとの間でメッセージを送受信することもできます。
Anypoint MQ を使用して、2 種類のキューを作成できます。
標準キュー
これらのキューでは特定のメッセージ順序は保証されません。メッセージをすばやく配信する必要があるアプリケーションでは、標準キューが最適です。
Anypoint MQ では、標準キューごとに最大 120,000 個のインフライトメッセージがサポートされます。
標準キューでは、「少なくとも 1 回 (at least once)」のメッセージ配信の信頼性があります。 高度に分散されたアーキテクチャにより、Anypoint MQ はメッセージを複数回配信することがあります。
FIFO (先入れ先出し) キュー
これらのキューではメッセージが順番に到着します。メッセージの厳密な順序と、正確に 1 回 (exactly once) の配信を必要とし、メッセージの配信速度があまり重要でないアプリケーションでは FIFO キューが最適です。「FIFO キュー」を参照してください。
Anypoint MQ では、FIFO キューのメッセージグループごとに最大 10 個のインフライトメッセージがサポートされます。 Anypoint MQ では、FIFO キュー内のメッセージグループ数は制限されません。
FIFO キューでは、「正確に 1 回 (exactly once)」のメッセージ配信の信頼性があります。 Anypoint MQ は、各メッセージを 1 つのコンシューマーにのみ配信します。
標準キューまたは FIFO キュー種別をデッドレターキュー (DLQ) として割り当てることができます。「デッドレターキュー」を参照してください。
標準キューは、メッセージエクスチェンジにバインドできます。これにより、メッセージを複数のキューに送信できます。
[Destinations (宛先)] ページでは、キューを種別で絞り込むことができます。
Anypoint MQ を使用する前に、環境を作成してユーザーに Anypoint MQ アクセス権限を付与する必要があります。 環境およびアクセス権限の設定を参照してください。
標準キューまたは FIFO キューを作成する手順は、次のとおりです。
Anypoint Platform にログインし、ナビゲーションメニューで [MQ] をクリックします。
[Destinations (宛先)] をクリックします。
[Add (追加)] アイコンをクリックして、メニューを表示します。
[Queue (キュー)] または [FIFO Queue (FIFO キュー)] を選択します。
[Exchange (エクスチェンジ)] については、「メッセージエクスチェンジの設定」を参照してください。
[Create Queue (キューを作成)] または [Create FIFO Queue (FIFO キューを作成)] の項目を入力します。
ID: キュー名を指定します。
キュー名には最大 127 文字の英数字 (a-z, A-Z、0-9) と句読点 (. -) 文字を含めることができます。スペースやその他の文字を含めることはできません。
Message TTL (メッセージ TTL) (存続期間): 未処理のメッセージが削除される前に保持される時間を指定します。
メッセージの最大 TTL は 2 週間です。
キューのメッセージ TTL を変更すると、新しい TTL 値がキュー内のすべてのメッセージとキューに追加されるすべての新しいメッセージに適用されます。
Default Acknowledgment Timeout (デフォルトの肯定応答タイムアウト): サーバー障害が発生してメッセージが肯定応答されない場合にメッセージをキューに戻すまでの待機期間を指定します。
メッセージをロックすると、ロックされている間、他のアプリケーションはメッセージを使用できなくなりますが、他のメッセージの読み取りがブロックされることはありません。
最大肯定応答タイムアウトは 12 時間です。
Assign Default Delivery Delay (デフォルトの配信遅延を割り当て): キューに送信されるメッセージの配信遅延期間を指定します。
メッセージの最小配信遅延は 0 秒です。最大は 15 分です。メッセージの送信時にデフォルトの配信遅延を上書きできます。「遅延キュー」を参照してください。
Encryption (暗号化): キュー内のすべてのメッセージを暗号化します。
「暗号化されたキュー」を参照してください。
Assign a Dead Letter Queue (デッドレターキューの割り当て):DLQ を割り当てます。
DLQ は、配信不能メッセージの送信先としてすでに作成されているキューです。「デッドレターキュー」を参照してください。
[Create Queue (キューを作成)] をクリックします。
Anypoint MQ では、[Destinations (宛先)] ページにキューが作成されます。
1 | キュー種別では、キューの詳細ペインを表示します。 |
2 | キュー ID では、[Queue Settings (キュー設定)] ページを表示します。 |
3 | キューの詳細の表示ラベルでは、[Queue Settings (キュー設定)] ページを表示します。 |
メッセージのコンテンツには、テキスト、CSV (カンマ区切り値)、または JSON を使用できます。 メッセージの最大サイズは 10 MB です。
ペイロードにテキスト以外の形式 (CSV、HTML、JSON、XML など) が含まれる場合、Anypoint MQ では送信前にその形式が文字列に変換されるため、ペイロードサイズが増加します。
この変換により、ペイロードが最大ペイロードサイズの 10 MB を超えて、Payload too large
エラーが発生する場合があります。
キューにテキストメッセージを送信する手順は、次のとおりです。
[Anypoint Platform] > [MQ] > [Destinations (宛先)] を選択します。
キュー ID をクリックします。
[Message Sender (メッセージ送信者)] ナビゲーションメニューをクリックします。
Type (型): [Text (テキスト)]、[CSV]、[JSON]。
「CSV メッセージをキューに送信する」および「JSON メッセージをキューに送信する」も参照してください。
Payload (ペイロード): Hello Mules!
などのメッセージペイロードテキストが含まれます。
Delivery Delay (配信遅延) (標準キューのみ): メッセージ配信の遅延時間を示します (省略可能)。
標準キューで [Assign Default Delivery Delay (デフォルトの配信遅延を割り当て)] を指定している場合、デフォルトの配信遅延が表示されます。このメッセージのその値を上書きしたり、配信遅延のないキューのメッセージの配信遅延を設定したりできます。
FIFO キューの個々のメッセージでは、遅延配信はサポートされません。
「メッセージの遅延配信」を参照してください。
Message Group ID (メッセージグループ ID) (FIFO キューのみ): メッセージが属するグループを指定します。
アプリケーションのメッセージ順序を保持するには、メッセージを送信する各アプリケーションのメッセージグループを作成できます。
メッセージグループ ID には最大 128 文字の英数字 (a-z、A-Z、0-9) および句読点 (! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ ] \ ^ _ ` { } \| ~) を含めることができます。
「FIFO キューとメッセージグループ」を参照してください。
Add User Properties (ユーザープロパティを追加): メッセージと共に送信するユーザープロパティを設定します。
[Add User Properties (ユーザープロパティを追加)] を切り替えて、送信するプロパティの名前と値のペアを指定し、[Add Property (プロパティを追加)] をクリックします。
[Message Sender (メッセージ送信者)] ページには、追加された文字列プロパティが青で表示され、数値プロパティがグレーで表示されます。
[Send (送信)] をクリックします。
メッセージがキューに到着したことを確認するには、[Destinations (宛先)] ページからキュー内のメッセージ数を確認します。
キュー内のメッセージ数を確認する手順は、次のとおりです。
[Anypoint Platform] > [MQ] > [Destinations (宛先)] を選択します。
キュー種別をクリックすると、キュー内のメッセージ数を含めその詳細が表示されます。
到着したメッセージを確認するには、キューからメッセージを取得します。
キューからメッセージを取得する手順は、次のとおりです。
[Anypoint Platform] > [MQ] > [Destinations (宛先)] を選択します。
キュー ID をクリックします。
[Message Browser (メッセージブラウザー)] ナビゲーションメニューをクリックします。
取得するメッセージの数 (1 ~ 500) とポーリングする時間 (1 ~ 3600 秒) を指定します。
指定された数値は、取得するメッセージの最小数になります。
FIFO キューでは、取得できるメッセージ数がメッセージブラウザー UI によって 10 件に制限されます。
FIFO キューからメッセージを取得する場合、注意事項を確認するチェックボックスをオンにします。注意事項には、ブラウザーでメッセージを表示すると、キューの他のコンシューマーがキュー内のメッセージにアクセスできなくなる可能性があることが示されています。
[Get Messages (メッセージを取得)] をクリックします。
メッセージ行をクリックして、メッセージペイロードを詳細ペインに表示します。
1 | メッセージを選択します。 | ||
2 | 詳細ペインのメッセージペイロード。 | ||
3 | [Return Messages (メッセージを戻す)] アイコンでは、すべてのメッセージをキューに戻します (たとえば、他のアプリケーションでこのメッセージを読み取ることができます)。
メッセージをキューに戻すことは、否定応答操作 (NACK) です。メッセージは変更されません。ただし、キューの作成時に設定した TTL の値によって、Anypoint MQ でメッセージが削除されるまでメッセージを使用できる期間が決まります。 [Message Browser (メッセージブラウザー)] ページを離れると、メッセージはキューに自動的に戻ります。 |
||
4 | [Delete (削除)] アイコン。
メッセージを削除することは、肯定応答操作 (ACK) です。ACK メッセージが Anypoint MQ でどのように処理されるのかについては、「ACK 操作と NACK 操作」を参照してください。 |
||
5 | [Full Screen (全画面)] アイコンでは、個別のウィンドウにメッセージペイロードを表示します。 | ||
6 | [Close (閉じる)] アイコンでは、詳細ペインを閉じます。
メッセージを削除したときに [Message Browser (メッセージブラウザー)] に
[Message Sender (メッセージ送信者)] で、または Anypoint MQ Connector の Publish 操作の一部として設定されたユーザープロパティは、メッセージの詳細ペインに表示されます。 |
キューに CSV メッセージを送信する手順は、次のとおりです。
[Anypoint Platform] > [MQ] > [Destinations (宛先)] を選択します。
キュー ID をクリックします。
[Message Sender (メッセージ送信者)] ナビゲーションメニューをクリックします。
[Type (種別)] を [CSV] に設定します。
[Payload (ペイロード)] 項目に次のテキストを入力します。
"dog", "fish", "parrot"
[Delivery Delay (配信遅延)] (標準キューのみ) や [Message Group ID (メッセージグループ ID)] (FIFO キューのみ) については、[キューへのメッセージの送信]を参照してください。
[Send (送信)] をクリックします。
[Message Browser (メッセージブラウザー)]、[Get Messages (メッセージを取得)] の順にクリックします。
メッセージ行をクリックして、メッセージペイロードを詳細ペインに表示します。
1 | [Full Screen (全画面)] アイコンでは、個別のウィンドウにメッセージペイロードを表示します。 | ||
2 | [Close (閉じる)] アイコンでは、詳細ペインを閉じます。
|
キューに JSON メッセージを送信する手順は、次のとおりです。
[Anypoint Platform] > [MQ] > [Destinations (宛先)] を選択します。
キュー ID をクリックします。
[Message Sender (メッセージ送信者)] ナビゲーションメニューをクリックします。
[Type (種別)] を [JSON] に設定します。
[Payload (ペイロード)] 項目に次のテキストを入力します。
{
"animal that walks": "dog",
"animal that swims": "fish",
"animal that flies": "parrot"
}
[Delivery Delay (配信遅延)] (標準キューのみ) や [Message Group ID (メッセージグループ ID)] (FIFO キューのみ) については、[キューへのメッセージの送信]を参照してください。
[Send (送信)] をクリックします。
[Message Browser (メッセージブラウザー)]、[Get Messages (メッセージを取得)] の順にクリックします。
メッセージ行をクリックして、メッセージペイロードを詳細ペインに表示します。
1 | [Full Screen (全画面)] アイコンでは、個別のウィンドウにメッセージペイロードを表示します。 | ||
2 | [Close (閉じる)] アイコンでは、詳細ペインを閉じます。
|
キュー内のすべてのメッセージをパージする手順は、次のとおりです。
[Anypoint Platform] > [MQ] > [Destinations (宛先)] を選択します。
キュー種別をクリックしてその詳細を表示します。
詳細ペインで [Purge Messages (メッセージをパージ)] アイコンをクリックします。
[Purge Messages (メッセージをパージ)] 確認ボックスで、チェックボックスをオンにして [Delete Messages (メッセージを削除)] をクリックし、キュー内のすべてのメッセージをパージすることを確認します。
既存のキューの設定を変更すると、新しいメッセージにのみ影響します。 新しい値は、すでにキューにあるメッセージには適用されません。
[Anypoint Platform] > [MQ] > [Destinations (宛先)] を選択します。
キュー ID をクリックして、[Queue Settings (キュー設定)] ページを表示します。
キュー設定を変更し、[Save Changes (変更を保存)] をクリックします。
必要なくなったキューは削除できます。削除されたキューのインフライトメッセージは失われます。削除されたキューは復元できません。
キューを削除する手順は、次のとおりです。
[Anypoint Platform] > [MQ] > [Destinations (宛先)] を選択します。
キュー種別をクリックしてその詳細を表示します。
詳細ペインで [Delete (削除)] アイコンをクリックします。
[Delete Queue (キューを削除)] 確認ボックスで、チェックボックスをオンにして [Delete Queue (キューを削除)] をクリックし、キューを削除することを確認します。
キューの削除またはパージにかかる時間は約 1 分です。この間、影響を受けるキューの状況は更新できません。
メッセージの順序を厳密に保持および適用する必要があるアプリケーションの場合、Anypoint MQ は先入れ先出し (FIFO) 処理を提供し、メッセージの順序付けができるようにします。FIFO キューを使用した場合、Anypoint MQ は、キューに入れられたメッセージの順序と同じ順序でメッセージを取得します。
FIFO キュー:
FIFO キュー内のすべてのメッセージの配信遅延がサポートされます。
FIFO キューの配信遅延設定を変更すると、Anypoint MQ により変更がキュー内のすべてのメッセージに遡って適用されます。
Anypoint MQ では、FIFO キュー内の個々のメッセージの遅延配信はサポートされません。
複数の メッセージグループがサポートされます。
暗号化が提供されます。
FIFO キューを暗号化しても、コンシュームされるメッセージの順序やコンテンツには影響しません。
デッドレターキュー (DLQ) を割り当てることができます。 ただし、この場合、Anypoint MQ ではメッセージの厳密な順序を保証できません。
FIFO キューでの DLQ の使用についての詳細は、デッドレターキューおよび FIFO キュー を参照してください。
FIFO キューは 300 TPS (トランザクション/秒) に制限されます。
ただし、API を使用して読み書き操作ごとに 10 個のメッセージ (最大) を一括処理した場合、FIFO キューは最大 3,000 TPS をサポートできます。
失敗した要求は TPS に含まれます。
FIFO キューをメッセージエクスチェンジにバインドすることはできません。
一部の設定では、Subscriber 操作で IMMEDIATE 肯定応答モードを使用していると、FIFO キューでメッセージが順序どおりに処理されません。
FIFO キューで prefetch
モードを使用する前に、「FIFO Queues and Prefetch Mode (FIFO キューと Prefetch モード)」を参照してください。
FIFO キューを作成するには、キューの作成を参照してください。キューが FIFO なのか、標準 (FIFO 以外) なのかを判断するには、その詳細を確認します。
Anypoint MQ および FIFO キューが使用できるリージョンについては、「Anypoint MQ FAQ」を参照してください。
Admin API を使用した FIFO キューの作成については、「Create a FIFO Queue Using the Admin API (Admin API を使用した FIFO キューの作成)」を参照してください。
メッセージグループを使用すると、複数のコンシューマーが FIFO キュー内のメッセージにアクセスできます。 一度に 1 つのコンシューマーのみがメッセージグループのメッセージにアクセスできます。 コンシューマーがメッセージグループにアクセスしている場合、他のコンシューマーは FIFO キュー内の他のメッセージグループを使用できるため、FIFO キューがブロックされる可能性が低くなります。
Anypoint MQ では、FIFO キュー内のメッセージグループ数は制限されません。
FIFO キューは、メッセージグループのメッセージを追加された順序で 1 つずつ処理します。 キューに複数のメッセージグループ ID がある場合は、同じメッセージグループ ID を持つメッセージをできる限り多く返します。
FIFO キューでは、メッセージグループ ID でメッセージを取得することはできません。 |
メッセージグループ ID に関連付けられていないメッセージは、デフォルトのメッセージグループに割り当てられます。順序付けられたメッセージの 1 つのグループが必要な場合、FIFO キューに送信されるメッセージに同じメッセージグループ ID を指定します。
メッセージグループ内ではメッセージの順序が維持されますが、異なるメッセージグループ間では維持されません。 複数のアプリケーションが同じメッセージグループ ID に関連付けられているメッセージを FIFO キューに送信すると、メッセージは到着した順序で保存されます。 アプリケーションのメッセージ順序を保持するには、各アプリケーションが特定のメッセージグループ ID を使用してメッセージを送信するようにします。
メッセージグループ内のメッセージが肯定応答されない場合、そのメッセージはキューに戻され、Anypoint MQ はグループ内の次のメッセージの処理を続行します。 グループ内のメッセージが前のメッセージに依存している場合、この動作は望ましくない可能性があります。
FIFO キューがメッセージを順番に処理するようにする手順は、次のとおりです。
フローの maxConcurrency
の値を 1
に設定します。これにより、フローは要求を個別に処理します。
subscriber-type
を polling
に設定します。これにより、メッセージのコンシュームが制御されます。
fetchSize
の値を 1
に設定します。これにより、1 つのメッセージのみがバッファされるようになります。
...
<flow name="myFlow" doc:id="doc_ID" maxConcurrency="1">
<anypoint-mq:subscriber doc:name="Subscriber" doc:id="doc_ID" config-ref="Anypoint_MQ_Config" destination="myQueue">
<anypoint-mq:subscriber-type >
<anypoint-mq:polling fetchSize="1" >
...
Anypoint MQ では、メッセージグループ内のメッセージの相対的な順序を維持しながら、さまざまなメッセージグループのメッセージが自動的に並行処理されます。
メッセージグループ内のメッセージを並行処理し、グループ内のメッセージの順序を維持するには、アプリケーション内で複数の Subscriber フローを設定し、各フローの maxConcurrency
の値を 1
に設定します。
メッセージグループ ID をメッセージに割り当てる手順は、次のとおりです。
[Message Sender (メッセージ送信者)] ページで、メッセージが属するメッセージグループを指定します。
メッセージを正確に 1 回処理する必要があるアプリケーションの場合 (トランザクション型のユースケースで使用するアプリケーションなど)、FIFO キューを使用すると、メッセージを正確に 1 回だけ配信できます。
FIFO キューでは、メッセージの重複を排除できます。同じメッセージ ID が含まれる FIFO キューに複数のメッセージを送信した場合、最初に到着したメッセージが有効なメッセージとして保持されます。以降のメッセージが 5 分の重複排除間隔内に到着した場合は重複とみなされ、破棄されます。たとえば、キューに ID が 12345
のメッセージが到着したら、それから 5 分間、FIFO キューは ID が 12345
のメッセージをすべて破棄します。
正確に 1 回だけ配信する必要があるアプリケーションを Anypoint Studio で構築する場合、次のいずれかの操作を実行できます。
Anypoint MQ Connector のパブリッシャー設定でメッセージ ID を設定する。
Anypoint MQ でキューに送信されるメッセージごとに一意のメッセージ ID を自動生成できるようにする (デフォルト)。
Anypoint MQ では、配信されないメッセージがデッドレターキュー (DLQ) と呼ばれるキューに送信されます。その後、DLQ に送信されたメッセージを分析し、そのメッセージが配信されなかった理由を特定できます。
DLQ は、未配信のメッセージのみを受信するという点を除き、基本的に他のキューと同じです。キューの作成時に存続期間 (TTL) の値、暗号化、配信遅延を指定できます。
少なくとも 2 つのキューを設定する必要があり、そのいずれかを DLQ として割り当てる必要があります。両方のキューで次の要件を満たしている必要があります。
同じ種別 (標準または FIFO) である
同じ地理的リージョンに存在する
同じ環境に存在し、同じ Anypoint Platform アカウントによって所有されている。
DLQ も FIFO キューであれば、DLQ を FIFO キューに割り当てることができます。
ただし、FIFO キューで DLQ を使用する場合、Anypoint MQ では、メッセージグループ内のメッセージが順序どおりに処理されることを保証できません。 メッセージが DLQ に送信されると、メッセージは FIFO キューに存在しなくなります。 Anypoint MQ では後続のメッセージが処理され、メッセージの順序は保持されません。
このため、アプリケーションでメッセージの順序を厳密に保持および適用する必要がある場合、DLQ を FIFO キューに割り当てないでください。
DLQ に送信される配信不能メッセージは、DLQ の暗号化設定に関係なく、ソースキューに設定された暗号化を使用します。クライアントによって DLQ に直接送信されるメッセージは、DLQ の暗号化設定を使用します。組織のポリシーとしてすべてのメッセージを暗号化する場合、すべてのキューの暗号化を設定する必要があります。
DLQ に送信されたメッセージが、別のキューからの配信不能なメッセージの場合、そのメッセージは、請求可能な API 要求に課金されません。 ただし、クライアントが DLQ にメッセージを直接送信した場合、そのメッセージは課金されます。
キューにデッドレターキューが割り当てられている場合、次のようになります。
Anypoint MQ メッセージブラウザーを使用してソースキューのメッセージを表示することは、最大配信数に含まれます。
メッセージを表示してキューに戻すことは NACK 操作として認識され、失敗した配信の試みとみなされます。
メッセージブラウザーでメッセージを削除すると、そのメッセージは最大配信数に含まれませんが、メッセージは失われます。
種別、リージョン、環境が同じであれば、任意のキューを別のキューの DLQ として割り当てることができます。
FIFO DLQ へのメッセージは FIFO キューから送信される必要があります。
標準 DLQ へのメッセージは標準キューから送信される必要があります。
「FIFO キュー」を参照してください。
DLQ をキューに割り当てる手順は、次のとおりです。
[Assign a Dead Letter Queue (デッドレターキューの割り当て)] を [On (オン)] に切り替えます。
次の追加項目が表示されます。
Dead Letter Queue Name (デッドレターキュー名)
以前に作成したキューの名前をドロップダウンリストから選択します。
[Delivery attempts before reroute (再転送前の配信の試行回数)]
メッセージを設定済みの DLQ に再転送するまで Anypoint MQ でキュー内のメッセージの配信を何回試行するかを必要に応じて指定します。 指定しない場合、デフォルト値の 10 回になります。 この範囲は 1 ~ 1000 です。
このプロパティは、Anypoint MQ Connector の [Redelivery (再配信)] タブの [Max Redelivery Count (最大差異配信数)] には関連しません。
|
REST API を使用してキューからメッセージを取得し、そのメッセージを新しいキューに書き込んで、DLQ からメッセージを回復できます。「Anypoint MQ Admin API」を参照してください。
キューが DLQ かどうかを判断するには、その詳細を確認します。
各キューの詳細は、Get Queue REST エンドポイントを使用して REST 管理 API により参照することもできます。
{
"encrypted": false,
"type": "queue",
"queueId": "my-dlq-1",
"deadLetterSources": [
"my-queue-4",
"my-dls-1"
],
"defaultTtl": 2000000,
"defaultLockTtl": 2000000
}
DLQ が設定されている場合、返されるエンティティに deadLetterSources
項目が含まれます。
詳細は、「Anypoint MQ Admin API」を参照してください。