2

以下は、私のファイル インバウンド エンドポイント構成です。指定されたパスで利用可能なすべての .edi ファイルを処理しています。

<file:inbound-endpoint path="D:\test docs\in" pollingFrequency="3000" responseTimeout="10000" doc:name="Incoming File">

<file:filename-regex-filter pattern="(.*).edi" caseSensitive="false" />

以下のように、Spring アプリケーションからこのエンドポイントにイベントを送信します

muleClient.dispatch("file://D:/test docs/in", inputFileName, null);

入力ファイル名を message1.edi として渡しています。ファイル インバウンド ポイントを、dispatch() で名前がペイロード オブジェクトとして送信される単一のファイルを処理するように制限したいと考えています。

ファイル受信エンドポイントで可能ですか?

Muleclient.dispatch() は非同期メソッドです。dispatch() からの返信を受け取るまで、現在のスレッドを一時停止したい。今のところ、thread.sleep() を使用しています。より良いアプローチはありますか?

4

3 に答える 3

2

ポイントを見逃しているかもしれません:-)しかし、ディスパッチはあなたが使いたいものではないと思います。ミュール ファイル リスナーでイベントをトリガーするには、message1.edi をファイル フォルダー file://D:/test docs/in にコピーします。

mule がファイルを取得して処理します。

あるいは、ファイルを動的に変更したい場合は、ミュールファイルエンドポイントが正規表現の動的変更をサポートしているとは思わないので、muleClient.dispatch("file://D:/test docs/in", inputFileName,ヌル); Groovyコンポーネントを使用して、トリガーで指定されたファイルのプロセスを読み取ります

def fileContent = new File("file://D:/test docs/in/" + inputFileName).text
return fileContent

テキストファイルでない場合は適宜調整してください。

于 2013-09-05T16:52:50.683 に答える
0

申し訳ありませんが、ミュール フロー コード全体を投稿できたはずです。以下は私のラバの流れです:

<flow name="ediTransformationFlow" doc:name="ediTransformationFlow"> <file:inbound-endpoint path="D:\smooks\test docs\in" pollingFrequency="3000" responseTimeout="10000" doc:name="Incoming File" transformer-refs="SmooksTransformer" moveToDirectory="D:\smooks\test docs\history" moveToPattern="#[header:originalFilename]">
<file:filename-regex-filter pattern="(.*).edi" caseSensitive="false" /> </file:inbound-endpoint> <file:outbound-endpoint path="D:\smooks\test docs\out" responseTimeout="10000" doc:name="Outgoing File" outputPattern="#[header:originalFilename].xml"/>
</flow>

私の要件は次のとおりです。スプリングコントローラーから、.ediファイル名をファイルインバウンドエンドポイントに送信します。D:\smooks\test docs\in フォルダーからファイルを読み取り、xml ファイルに変換します。ファイル アウトバウンド エンド ポイントは、xml ファイルを D:\smooks\test docs\out フォルダーに配置します。スプリング コントローラーでは、xml ファイルを読み取って dom ソースを作成できるはずです。

xmlDocument = builder.parse(documentRootPath + outputFileName); Source source = new DOMSource(xmlDocument);

スプリングコントローラーからミュールをリクエストするには、ミュールクライアントを使用しています

muleClient.dispatch("file://D:/smooks/test docs/in", inputFileName,null); message = muleClient.request("file://D:/smooks/test docs/out", 100000);

于 2013-09-06T05:05:19.577 に答える