Anypoint MQ は、アプリケーション間でデータを非同期に交換するためのマルチテナントのクラウドベースメッセージキューサービスです。 Anypoint MQ メッセージングブローカーを使用して、Mule メッセージをキューにパブリッシュすると、他のアプリケーションがそのメッセージをコンシュームできるため、アプリケーション間の通信が可能になります。
Anypoint MQ は、Anypoint Platform と完全に統合されており、アクセス制御、クライアント管理、およびコネクタを提供します。 アクセス管理と統合されていることで、ロールベースのアクセス制御や接続アプリケーションのサポート用の環境やビジネスグループを指定できます。
Anypoint MQ では、ハイブリッドのユースケース、さまざまなデバイスからデータを収集する IoT (モノのインターネット) がサポートされており、デバイスアプリケーションで使用する REST API が提供されます。 また、node.js などの他のアプリケーションフレームワークと共に Anypoint MQ を使用してキューと通信することもできます。
次のスポットライト動画では、Anypoint MQ の概要について説明します。
Anypoint MQ:
-
クラウドで完全にホストおよび管理されるキューやメッセージエクスチェンジを提供します。
-
大容量のペイロード、暗号化、キューイング、パブリッシュ/サブスクライブパラダイムをサポートします。
-
REST API を使用することで、Mule 以外のアプリケーションと簡単に接続できます。
-
Anypoint Studio へのアクセスを提供します。これにより、ドラッグアンドドロップして設定するシンプルな方法でキューおよびメッセージエクスチェンジを活用できます。
Anypoint MQ の使用を始める前に
-
アカウントチームに連絡して Enterprise サブスクリプションを取得し、Anypoint MQ を有効化します。
Enterprise サブスクリプションを追加したら、Anypoint MQ が使用可能になるまで 1 時間待ってください。
-
環境と権限を設定します。
詳細は、環境およびアクセス権限の設定を参照してください。
-
Anypoint MQ については、この概要を確認してください。
Anypoint MQ の機能
Anypoint MQ には、次の機能があります。
- キューおよびメッセージエクスチェンジ
-
キューにメッセージを送信し、キューからメッセージを取得します。 メッセージエクスチェンジを使用して、メッセージを複数の標準キューに同時に送信したり、インテリジェントなメッセージルーティングルールを使用してメッセージを特定のキューに転送したりします。
詳細は、以下を参照してください。
- 管理コンソール
-
管理コンソールを使用して、キュー統計を監視したり、キューをパージしたり、インフライトメッセージ数を確認したりします。
- Anypoint MQ Connector
-
CloudHub にデプロイされているか、ハイブリッドシナリオで使用されてオンプレミスにデプロイされているかに関係なく、任意の Mule アプリケーションからメッセージを送受信します。
詳細は、Anypoint MQ Connectorを参照してください。
- 使用量情報
-
今月と先月の使用量 (メッセージおよび API 要求の合計数など) を確認できます。 組織のシステム管理者やオーナーは、[Access Management (アクセス管理)] ページからこの情報にアクセスします。
詳細は、使用量グラフの表示を参照してください。
- REST API
-
REST API を使用して、Mule 以外のアプリケーションと簡単に通信できます。
詳細は、Anypoint MQ の REST APIを参照してください。
- 環境およびロールベースのアクセス制御
-
Anypoint Platform のアクセス管理を使用して、キューのさまざまな環境、各環境にアクセスできるユーザー、各環境内で実行できる内容を指定します。
詳細は、環境およびアクセス権限の設定を参照してください。
- クライアント管理
-
接続アプリケーションを使用して、API を使用しての Anypoint Platform への認証を行います。
名前、ID、およびシークレットを使用して各コンシューマーを接続アプリケーションとして登録します。 接続アプリケーションは、ID とシークレットを使用して認証を行い、1 つの環境内でキューとメッセージエクスチェンジにアクセスできます。 接続アプリケーションを複数の環境またはビジネスグループにまたがって使用することはできません。
詳細は、「接続アプリケーションの設定」を参照してください。
- 大容量のペイロード
-
最大 10 MB の大容量のペイロードを送信します。
ペイロードにテキスト以外の形式 (CSV、HTML、JSON、XML など) が含まれる場合、Anypoint MQ では送信前にその形式が文字列に変換されるため、ペイロードサイズが増加します。 この変換により、ペイロードが最大ペイロードサイズの 10 MB を超えて、
Payload too large エラーが発生する場合があります。
- 障害回復
-
サービスが一時的にダウンしてもメッセージが確実に配信されるようにします。
各リージョン内で、Anypoint MQ サービスは複数の可用性ゾーン (AZ) にデプロイして、高可用性 (HA) を提供します。1 つの可用性ゾーンのサービスがダウンしても、Anypoint MQ サービスはその領域で正常の動作します。リージョンのすべての可用性ゾーンがダウンすると、少なくとも 1 つの可用性ゾーンが復帰するまで Anypoint MQ サービスはそのリージョンで使用できなくなります。 サービスが中断される前にすでに Anypoint MQ システムにあったメッセージは保持されます。
- 使用量統計
-
使用量統計のチャートを表示して、ピーク使用量やサブスクリプションのパラメーターを管理できるようにします。 チャートでは、現在および過去の使用量 (コンシュームされたデータ、API 要求、受信メッセージの合計数を含む) が表示されます。
詳細は、使用量グラフの表示を参照してください。
Anypoint MQ Stats API を使用して、キューのパフォーマンスの統計分析を実行することもできます。
詳細は、「Anypoint MQ Stats API」を参照してください。
Anypoint MQ は CloudHub Insight または Anypoint Monitoring と併用できません。
キューおよびメッセージエクスチェンジ
メッセージキューは、拡張性と信頼性の高い方法でアプリケーションが通信できる一時的なストレージを提供します。 パブリッシャーはメッセージをキューにパブリッシュし、サブスクライバーはキューからメッセージを受信できます。
メッセージを複数のキューおよびコンシューマーに配信するには、複数のキューをメッセージエクスチェンジにバインドします。 エクスチェンジに送信されたメッセージはそのバインドされたすべてのキューに同時に表示されます。
たとえば、パブリッシャーが天気の変化をパブリッシュするとします。そのデータを複数のアプリケーションが受信する必要がある場合、メッセージエクスチェンジを使用して、1 つのメッセージをアプリケーションごとに複数のキューにパブリッシュします。
バインドは、メッセージエクスチェンジにメッセージの送信先を通知する、キューとメッセージエクスチェンジのリレーションです。 インテリジェントなメッセージルーティングルールを設定することで、メッセージをメッセージエクスチェンジにバインドされた特定のキューに転送できます。
-
キューは複数のメッセージエクスチェンジにバインドできます。
-
メッセージエクスチェンジには、最大 450 件のキューをバインドできます。
-
メッセージルーティングルールが定義されたエクスチェンジには、最大 10 件のキューをバインドできます。 エクスチェンジに 10 件を超えるキューのバインドがある場合、インテリジェントなメッセージルーティングは使用できません。
この例では、Salesforce のカスタマーリレーションシップマネージャー (CRM) を実行しているアプリケーションが、Anypoint MQ を使用して異なるデータベースを処理する 2 つのアプリケーションと通信します。
Salesforce アプリケーションはパブリッシュ/サブスクライブメッセージを Anypoint MQ メッセージエクスチェンジ (customer-updates) に送信します。
2 つのアプリケーション (customer-consumer-1 と customer-consumer-2) がメッセージエクスチェンジからのメッセージを受信し、それぞれのデータベースに送信します。
キューの利点
キューには、以下の利点があります。
-
水平拡張性
メッセージをキューに配置することで、そのメッセージを処理する作業を複数のサブスクライバーに分散できます。
-
信頼性
キューでは、失敗した場合でも必ずメッセージが処理されます。
Anypoint MQ では、ロックと応答メカニズムを使用することで、キューにより信頼性が提供されます。 この機能により、失敗した場合でも必ずメッセージが処理されます。
-
分離
キューは、異なるアプリケーションおよびデバイス間の通信メカニズムとして使用できます。これにより、他のアプリケーションに影響を与えることなく、異なる開発ライフサイクルやメンテナンス期間を設定できます。
-
集約
複数のメッセージプロデューサーがメッセージを 1 つのキューにパブリッシュできるため、コンシューマーはメッセージを簡単にコンシュームできます。
メッセージコンシュームプロセスは次のようになります。
-
コンシューマーがキューからメッセージを取得します。これにより、メッセージはロックされ、他のすべてのコンシューマーに表示されなくなります。
-
コンシューマーは、取得時にロックタイムアウトを指定します。指定された期間内にメッセージが処理されないと、Anypoint MQ によってメッセージが他のコンシューマーに表示されます。 コンシューマーノードのクラッシュなどのエラーが発生した場合、別のノードがメッセージを処理できます。 メッセージをロックしても、他のメッセージの読み取りはブロックされません。
-
コンシューマーがメッセージを正常に処理すると、クライアントはメッセージの肯定応答を行い、Anypoint MQ はそのメッセージをキューから削除します。
-
コンシューマーがメッセージを処理できない場合、メッセージは否定応答で続行されて、キューに再度表示されます。
詳細は、「ACK および NACK 操作」を参照してください。
-
-
-
キュー内の無制限のメッセージ数
Anypoint MQ では、キュー内のメッセージ数は制限されません。 キュー内の各メッセージのサイズは 10 MB に制限されます。
-
ロングポーリング
メッセージは、ロングポーリングを使用して読み取られます。サーバーは新しいデータが使用可能になるまで要求を開いたままにします。その後、Anypoint MQ は、1 回の読み取りでメッセージを一括して配信します。
-
請求および課金
請求は、作成されたキューやメッセージエクスチェンジの数ではなく、キューからサブスクライバーに配信されたメッセージの数に基づきます。
MuleSoft Government Cloud の Anypoint MQ
Anypoint MQ のすべての機能は MuleSoft Government Cloud でサポートされますが、次の例外があります。
-
暗号化されないキューはサポートされません。
すべてのキューが暗号化されます。 キューを作成するときに、[Encryption (暗号化)] オプションは無効になっており、デフォルトで選択済みになっています。
-
クライアントアプリケーションはサポートされません。
代わりに接続アプリケーションを使用してください。
-
4.x より前のバージョンの Anypoint MQ 用 Anypoint Connector はサポートされません。
Anypoint MQ で接続アプリケーションを使用するには、Mule 4 用 Anypoint MQ Connector 4.x を使用する必要があります。
-
Anypoint MQ Stats API の次の REST API はサポートされません。
Anypoint MQ Stats API を使用して、キューおよびエクスチェンジのメトリクスを取得できます。 詳細は、「Anypoint MQ Stats API」を参照してください。