MuleフローからHTTP Request発行

今まではMuleのフローはHTTPのリクエストを受けた後、記載されたフロー通りに処理を実行していきましたが、今回はMule側からHTTPのリクエストを発行し呼び出す使い方を実践していきたいと思います。

スポンサーリンク

今回使うコンポーネント

コンポーネントアイコン・領域用途
RequestIs TrueHTTPリクエストを発行する

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コンポーネント設定

RequestコンポーネントにはConfigurationが必須となりますので、Configurationには以下の内容をセットします。今回はMule同士で呼び出しを行うため、HostとPortはHTTP Listener configと同じ内容を設定します。

項目設定内容備考
ProtocolHTTP Listener configのProtocolを設定
HostHTTP Listener configのHostを設定
PortHTTP Listener configのPortを設定
HTTP Request configuration

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を始めとする外部サービスなどにもリクエスト送信することが可能ですので、よりできることの幅が広がったと言えるでしょう。

MuleSoft
スポンサーリンク

コメント