Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerAnypoint Runtime Manager エージェントは Mule JAVA API をサービスとして公開する Mule プラグインで、ユーザーは外部システムから Mule インスタンスを操作および監視することができます。
このドキュメントでは、Runtime Manager エージェントのアーキテクチャと主要コンポーネントの概要を説明します。
Mule に接続します。このコンポーネントでは、トランスポート層 (メッセージがユーザーによって、またはユーザーに伝達される方法) は認識されません。
通信層を処理します。キープアライブ状況、セキュリティ、プロトコルが含まれます。
Web サービス API をユーザーに公開します。受信メッセージ (デプロイメント要求など) はすべて外部メッセージハンドラーによって処理されます。要求に応じて 1 つまたは複数の Mule サービスが実行されます。
Mule 通知を受信するたびに Mule サービスによってコールされます。
エージェントには、次に示すように Mule と通信を行う 3 通りの方法があります。
例: デプロイされたアプリケーションを取得する。
例: デプロイし、デプロイメントフェーズについて通知する。
例: JMX 情報を外部システムにプッシュする。
エージェントのアーキテクチャは非常に単純です。
トランスポートが通信を処理します。
外部メッセージハンドラーがメッセージをディスパッチします。
サービスが Mule に接続します。
内部メッセージハンドラーが Mule 通知をディスパッチします。
3 種類 (同期、非同期、プッシュ) のメッセージそれぞれについて、各コンポーネントの相互動作を次の図に示します。
コンポーネントの相互動作の典型的な順序を次に示します。
外部システムがエージェントに要求を送信します。
外部メッセージハンドラーが実行され、インターフェースを使用して Mule サービスをコールします。
Mule サービスが Mule をコールし、対応するアクションを実行します。
Mule が通知で応答します。
サービスがその通知をエージェントの通知にマップし、その通知種別を処理する内部メッセージハンドラーを見つけます。
対応する内部メッセージハンドラーが実行されます。
Runtime Manager エージェントは起動時に $MULE_HOME/conf/mule-agent.yml
ファイルから設定を読み込みます。このファイルにインストールの設定パラメーターを手動で追加し、編集する必要があります。形式は一目瞭然です。サンプルファイルをダウンロードできます。
インストール時に、クイックスタートスクリプトを使用して Runtime Manager エージェントを設定することもできます。詳細は、 「Runtime Manager エージェントのインストールまたは更新」を参照してください。
コンポーネントの属性を mule-agent.yml
ファイルで設定することができます。この目的のために、クラス属性に @Configurable
として注釈を付けることができます。
@Singleton
public class MyRequestHandler implements ExternalMessageHandler
{
@Inject
private MuleService muleService;
@Configurable
public String host;
...
}
java
エージェントへの WebSockets 経由の通信では HTTP プロトコルが実装されます。エージェントとの間で送受信されるすべてのメッセージは、WebSocket 経由で (エージェント設定に応じて) バイナリメッセージまたはテキストとして送信される HTTP メッセージです。これらの HTTP メッセージは、エージェントの REST 通信で使用されるものと同じです。
ハンドシェイクは、WebSocket トランスポートに固有のプロセスです。スタートアップ時に、エージェントはコンソールに対応する (エージェント設定から取得される) WebSocket アドレスにハンドシェイク要求を送信します。この後、エージェントはハンドシェイク要求として認識できないすべての受信メッセージを無視します。ハンドシェイク要求として識別されるメッセージを受信すると、その応答が有効かどうかチェックされます。有効な場合は、エージェントはすべての受信メッセージへの応答を開始します。
ハンドシェイク要求の例を次に示します。
POST handshake HTTP/1.1 Content-Type: application/json Message-Id: ${messageId} accept: application/json Content-length: 1234 { "agentVersion": "1.0.0", "muleVersion": "${muleVersion}", "uniqueId": "${uniqueId}" }
承認:
HTTP 200 OK Message-Id: ${messageId}
未承認:
HTTP 401 UNAUTHORIZED Message-Id: ${messageId}