0

ファイルのディレクトリを監視し、SFTP でファイルを最終的な宛先に送信する単純な Mule Flow を作成しようとしています。大量のファイルがある場合は、SFTP を 10 個のグループにまとめる必要があります。

ここに私のXMLがあります

<flow name="FileTransferUtilFlow1" doc:name="FileTransferUtilFlow1">
    <file:inbound-endpoint path="${source.dropbox.dir}"
        moveToDirectory="${completed.dir}" responseTimeout="10000" doc:name="File">
        <file:filename-wildcard-filter pattern="*.txt"
            caseSensitive="true" />
    </file:inbound-endpoint>
    <async processingStrategy="Queued_Asynchronous_Processing_Strategy"
        doc:name="Async">
        <foreach doc:name="Foreach" batchSize="10">
            <sftp:outbound-endpoint exchange-pattern="one-way"
                host="192.168.1.14" port="22" path="${landing.dir}" user="myID"
                password="xxyyzz" responseTimeout="10000" doc:name="SFTP"
                outputPattern="#[header:originalFilename]" />
        </foreach>
    </async>
</flow>

そして、ここにエラーがあります:

java.lang.IllegalArgumentException: Object "org.mule.transport.file.ReceiverFileInputStream" not of correct type. It must be of type "interface java.lang.Iterable,interface java.util.Iterator,interface org.mule.routing.MessageSequence,interface java.util.Collection"
at org.mule.routing.CollectionSplitter.splitMessageIntoSequence(CollectionSplitter.java:60)
at org.mule.routing.Foreach$CollectionMapSplitter.splitMessageIntoSequence(Foreach.java:250)
at org.mule.routing.outbound.AbstractMessageSequenceSplitter.process(AbstractMessageSequenceSplitter.java:60)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)}
4

1 に答える 1

1

ドキュメントに記載されているように、ForEach スコープは、コレクションを分割/集約するように設計されています。代わりに、ファイル エンドポイントはディレクトリから各ファイルをポーリングし、そこからメッセージを作成します。

目標を達成するには、明示的な集計戦略を導入する必要があります。最善の方法は、カスタム アグリゲーターを使用することです。

于 2012-10-29T11:33:11.110 に答える