Flex Gateway新着情報
Governance新着情報
Monitoring API Manager多くのインテグレーションでは、次のように特定の条件に応じて異なるサーバーへの接続が必要です。
請求書を送信する部署に応じて異なる請求書ストレージサーバーに接続する。
マルチテナントのユースケースなど、インテグレーションの対象に応じて異なるサーバーに接続する。
こうしたユースケースに対応するため、config
要素では、これらの条件を評価して適切なサーバーに接続するパラメーター式がサポートされています。
次の例は、以下に該当する動的マルチキャストアプリケーションの例を示しています。
host
、username
、password
が式になっているコネクタの設定を定義する。
HTTP 経由でコンテンツを投稿するフロー (HTTP Listener によってトリガーされる) を記述する。
File Connector の Read 操作を使用して、host
、user
、port
などの列で構成される FTP 宛先セットを含む recipients.csv
ファイルを読み込む。
[For Each] コンポーネントと FTP の Write 操作を使用して、コンテンツを各 FTP 宛先に書き込む。[For Each] の反復ごとに、FTP グローバル設定要素で設定された式が異なる値に解決され、サーバーごとに異なる接続が確立されます。
この例をテストするには、Mule アプリケーションを作成して、curl コマンドを使用して実行します。
Mule アプリケーションフローを作成する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューで、[HTTP] > [Listener] を選択します。
[HTTP] の [Listener] を Studio キャンバスにドラッグします。
[HTTP Listener (HTTP リスナー)] 設定画面で、必要に応じて [Display Name (表示名)] 項目の値を変更します。
[Path (パス)] を /multitenant
に設定します。
[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の HTTP Listener のすべてのインスタンスで使用できるグローバル要素を設定します。
[General (一般)] タブで、次の項目を設定します。
Host (ホスト): All Interfaces [0.0.0.0] (default)
Port (ポート): 8081
[OK] をクリックします。
[Set Variable] コンポーネントを [HTTP] の [Listener (リスナー)] ソースの右にドラッグします。
[Name (名前)] を content
に、[Value (値)] を #[payload]
に設定します。
File Connector の [Read] 操作を [Set Variable] コンポーネントの右にドラッグします。
[File Path (ファイルパス)] を recipients.csv
に設定します。これにより、host
、user
、port
などの列で構成されるランダムな FTP 宛先セットを含む CSV ファイルが読み取られます。
[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の File Connector のすべてのインスタンスで使用できるグローバル要素を設定します。
デフォルト設定を受け入れ、[OK] をクリックします。
Read 操作の [MIME Type (MIME タイプ)] タブの [MIME Type (MIME タイプ)] で [application/csv] を選択します。
Studio で、[Transform Message] コンポーネントを [Read] 操作の右にドラッグします。
コンポーネントの [Output (出力)] セクションで、次の DataWeave コードを追加して、CSV ファイルの列にマップします。
%dw 2.0
output application/java
---
payload map using (row = $) {
host: row.Host,
user: row.User,
password: row.Password}
dataweave
[For Each] コンポーネントを [Transform Message] コンポーネントの右にドラッグします。
FTP の [Write] 操作を [For Each] コンポーネントにドラッグします。
For Each の反復ごとに、Write 操作は、コンテンツを各 FTP 宛先に書き込みます。
[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の FTP の Write 操作のすべてのインスタンスで使用できるグローバル要素を設定し、次の項目を設定します。
Host (ホスト): #[payload.host]
Username (ユーザー名): #[payload.username]
Password (パスワード): #[payload.password]
[OK] をクリックします。
[Path (パス)] を demo.txt
に設定します。
[Content (コンテンツ)] 項目を payload
に設定します。
[Set Payload] コンポーネントを [For Each] コンポーネントの右にドラッグします。
[Value (値)] 項目を Multicast Ok
に設定します。
Mule アプリケーションを作成したら、それを実行してテストします。
Studio で、Mule アプリケーションを保存します。
Package Explorer でプロジェクト名をクリックし、[Run (実行)] > [Run As (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
ブラウザーを開き、http://0.0.0.0:8081/multitenant
と入力します。
Mule 4 の動作に関する注意事項 (Mule 3 ユーザー向け):
HTTP Listener ソースを通じて投稿された情報は各 FTP サイトに複数回書き込まれますが、Mule 4 の反復可能ストリーム機能によってストリームの複数回のコンシュームによるオーバーヘッドが防止されます。
Mule 4 では、For Each コンポーネントは最初に Java 構造に変換することなく、CSV ファイルの各行を自動的に処理します。
Mule 3 では、最初に CSV ファイルを Java 構造に変換する必要がありました。ただし、Mule 4 は Java に依存しないため、変換せずに動作するようになりました。
ファイルを読み取る場合やリストする場合に、ファイルのメタデータ (たとえば、ファイル名、フルパス、サイズ、タイムスタンプ) を知りたいと考える場合もあります。コネクタは Mule メッセージ属性を使用してこの情報にアクセスします。
この例のフローをすばやく Mule アプリケーションに読み込むには、Studio キャンバスで次のコードを [Configuration XML (設定 XML)] タブに貼り付けます。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:sftp="http://www.mulesoft.org/schema/mule/sftp"
xmlns:file="http://www.mulesoft.org/schema/mule/file"
xmlns:ftp="http://www.mulesoft.org/schema/mule/ftp"
xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/ftp http://www.mulesoft.org/schema/mule/ftp/current/mule-ftp.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/sftp http://www.mulesoft.org/schema/mule/sftp/current/mule-sftp.xsd">
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<file:config name="File_Config" doc:name="File Config" doc:id="" />
<ftp:config name="FTP_Config" doc:name="FTP Config" doc:id="" >
<ftp:connection host="#[payload.host]" username="#[payload.username]" password="#[payload.password]" />
</ftp:config>
<flow name="streaming-multitenantFlow" >
<http:listener path="/multitenant"
doc:name="Listener" config-ref="HTTP_Listener_config"/>
<set-variable variableName="content" value="#[payload]" doc:name="Variable" />
<file:read path="recipients.csv" doc:name="Read"
outputMimeType="application/csv" config-ref="File_Config"/>
<ee:transform doc:name="Transform Message" doc:id="" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
payload map using (row = $) {
host: row.Host,
user: row.User,
password: row.Password
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<foreach doc:name="For Each" >
<ftp:write doc:name="Write" doc:id="" path="recipients.csv" config-ref="FTP_Config"/>
</foreach>
<set-payload doc:name="Set Payload" value="Multicast OK"/>
</flow>
</mule>
xml