今まではMuleのフローはHTTPのリクエストを受けた後、記載されたフロー通りに処理を実行していきましたが、今回はMule側からHTTPのリクエストを発行し呼び出す使い方を実践していきたいと思います。
今回使うコンポーネント
コンポーネント | アイコン・領域 | 用途 |
---|---|---|
Request | HTTPリクエストを発行する |
Mulefフローからリクエスト呼び出し
Requestコンポーネントによって呼び出され、呼び出し先の定義されたロジックを実行していくことになります。
今回はMule上からフローを2つ作成し、一方のフローからリクエスト送信し、もう一方のフローへ呼び出す仕組みを作ってみます。
まずは呼び出し先のフロー。こちらはいつも通りHTTP Listenerからフローを作成します。今回は「Hello World」とログを記載する処理のみとします。
そして呼び出し元のフローもHTTP Listenerからフローを作成します。こちらはRequestコンポーネントを使用して、呼び出し先のフロー「helloWorldFlow」を呼び出します。
Requestコンポーネントに設定する内容は以下の通りです。
項目 | 設定内容 | 備考 |
---|---|---|
Configuration | 後述で作成するHTTP Request Configurationを指定 | |
Method | 呼び出し元フローのHTTP Listenerのメソッド名を設定 | |
Path | 呼び出し元フローのHTTP ListenerのPathを設定 |
RequestコンポーネントにはConfigurationが必須となりますので、Configurationには以下の内容をセットします。今回はMule同士で呼び出しを行うため、HostとPortはHTTP Listener configと同じ内容を設定します。
項目 | 設定内容 | 備考 |
---|---|---|
Protocol | HTTP Listener configのProtocolを設定 | |
Host | HTTP Listener configのHostを設定 | |
Port | HTTP Listener configのPortを設定 |
Requestの前後にLoggerを挟んで、呼び出し前後のログを記録します。今回は特に情報の受け渡しは実施しないため、BodyやHeaderはデフォルトのままでOKです。
2つのフローを作成したら実際に実行させてみます。呼び出し元のフロー「requestHttpFlow」のリクエストを送信するとログが以下のようになります(日時などの余分な箇所は省略しています)。
INFO [[MuleRuntime].uber.03: [mulepractice].requestHttpFlow.CPU_LITE @26d87239] [processor: requestHttpFlow/processors/0; event: 730595e0-ad32-11ee-b6af-b0be83167517] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: Before request
WARN [[MuleRuntime].uber.03: [mulepractice].requestHttpFlow.CPU_LITE @26d87239] [processor: requestHttpFlow/processors/1; event: 730595e0-ad32-11ee-b6af-b0be83167517] org.mule.extension.http.internal.request.HttpRequestFactory: Body is ignored since the HTTP Method is between the empty body methods ([HEAD, GET, OPTIONS]) and the Send Body Mode is not set to 'ALWAYS'. future warnings like this will be suppressed in order to avoid performance degradations
INFO [[MuleRuntime].uber.03: [mulepractice].helloWorldFlow.CPU_LITE @5f88e0f7] [processor: helloWorldFlow/processors/0; event: 730595e0-ad32-11ee-b6af-b0be83167517] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: Hello world
INFO [[MuleRuntime].uber.03: [mulepractice].requestHttpFlow.CPU_LITE @26d87239] [processor: requestHttpFlow/processors/2; event: 730595e0-ad32-11ee-b6af-b0be83167517] org.mule.runtime.core.internal.processor.LoggerMessageProcessor: After Request
Bodyなどは特に何も設定していないため警告は出ていますが、上記の通り「helloWorldFlow」が呼び出され呼び出し前後のログに挟まれた形で「Hello world」が表示されていることが分かりました。「requestHttpFlow」フローから「helloWorldFlow」フローへ呼び出しされていることが確認できました。
このように、MuleフローからでもHTTPリクエストを発行させることが可能です。今回はMule同士でしたが、Salesforceを始めとする外部サービスなどにもリクエスト送信することが可能ですので、よりできることの幅が広がったと言えるでしょう。
コメント