verschieben Sie die Dateien mit Maultier
Will ich mit Maultier für den Transport und die Verarbeitung von Dateien. Ich versuche zu bewegen, dass die gleiche Datei in einen anderen Ordner mit einem Fluss und einer "alle-router", aber es funktioniert nicht.
Dies funktioniert:
<flow name="testflow2Flow1" doc:name="testflow2Flow1">
<file:inbound-endpoint path="C:\IN" fileAge="10000" responseTimeout="10000" doc:name="File"/>
<set-variable variableName="tempfilename" value="#[header:originalFilename]" doc:name="Variable"/>
<file:outbound-endpoint path="C:\OUT" responseTimeout="10000" doc:name="File"/>
</flow>
Aber diese nicht!
<flow name="testflow2Flow1" doc:name="testflow2Flow1">
<file:inbound-endpoint path="C:\IN" fileAge="10000" responseTimeout="10000" doc:name="File"/>
<set-variable variableName="tempfilename" value="#[header:originalFilename]" doc:name="Variable"/>
<all doc:name="All">
<processor-chain>
<file:outbound-endpoint path="C:\OUT" responseTimeout="10000" doc:name="File"/>
</processor-chain>
</all>
</flow>
Bekomme ich diese exception:
INFO-2013-10-03 20:22:19,072 [[testflow2].- Anschluss.Datei.mule.Standard.- Empfänger.01] org.mule.transport.Datei.FileMessageReceiver: Lock-erhalten am-Datei: C:\IN\test.txt.txt
ERROR-2013-10-03 20:22:19,088 [[testflow2].testflow2Flow1.stage1.02] org.mule.Ausnahme.DefaultMessagingExceptionStrategy:
Meldung : es Kann keine Kopie der Nachricht mit einem stream Nutzlast. Payload-Typ ist "org.mule.transport.Datei.ReceiverFileInputStream". Message-payload-Typ ist: ReceiverFileInputStream
Code : MULE_ERROR--2
Ausnahme-stack ist:
1. Nicht kopieren-Nachricht mit einem stream Nutzlast. Payload-Typ ist "org.mule.transport.Datei.ReceiverFileInputStream". Message-payload-Typ ist: ReceiverFileInputStream (org.mule.api.MessagingException)
org.mule.routing.ausgehende.AbstractSequenceRouter:74 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
Root-Ausnahme-stack-trace:
org.mule.api.MessagingException: Nicht kopieren-Nachricht mit einem stream Nutzlast. Payload-Typ ist "org.mule.transport.Datei.ReceiverFileInputStream". Message-payload-Typ ist: ReceiverFileInputStream
bei org.mule.routing.ausgehende.AbstractSequenceRouter.route(AbstractSequenceRouter.java:74)
bei org.mule.routing.ausgehende.AbstractOutboundRouter$1.Prozess(AbstractOutboundRouter.java:105)
bei org.mule.routing.ausgehende.AbstractOutboundRouter$1.Prozess(AbstractOutboundRouter.java:100)
+ 3 weitere (setzt den debug-level der Protokollierung oder '-Dmule.verbose.Ausnahmen=true' für alles)
- Bitte teilen Sie Ihre mule config
- Jetzt habe ich noch die XML-config. Ich kann nicht verstehen, warum das hinzufügen der alle router bricht die Funktionalität.
- und was ist die Ausnahme, die Sie bekommen?
- Danke Learner, ich hatte ein ähnliches Problem und es behoben indem ich zu meinem Datei-Referenz in der Globalen Elemente und veränderte mein streaming-Wert auf 'false'! Vielen Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen dieses
<object-to-byte-array-transformer/>
Transformator nach Ihrer inbound-endpoint wird, damit es funktioniert.Denke ich, warum es fehlgeschlagen ist, weil das Maultier war, zu Lesen versucht, die Datei als stream und schreiben als stream; das war in Ordnung in Ihrem 1. Fall.
Aber in der zweiten fließen, weil Sie wollen, schreiben Sie an mehr als einem Ort, das ist nicht möglich, mit streaming. Mit der Ergänzung dieser Transformator, jetzt haben Sie die volle Nutzlast in Erinnerung und geschrieben werden können, mehr als eine.
Müssen Sie verwandeln InputFileStream zu einem byt-array.
Legen Sie eine Globale Transformator(Gehen Sie zu Datei-connector-Eigenschaften-->Transformatoren-->Hinzufügen).
Wählen Sie Datei in Byte-Array-option. Connector config wird wie folgt Aussehen.
file:inbound-endpoint Pfad="C:\File Input" responseTimeout="10000" transformer-refs="File_to_Byte_Array" doc:name="Datei"/>
InputFileStream Sie können nicht kopieren, wie es ist, eine variable.