2017-09-27 2 views
1

In Flow-1, d. H. In Absender, habe ich zwei Satz Anhang Transformator des Typs JSON und Textdatei. Ich rufe eine andere Anwendung (Empfänger) mit HTTP-Requests-Komponente auf. Im Empfänger erhalte ich diesen Anhang als Payload für eingehende Anhänge und nicht als Payload für ausgehende Attachments. Beim Senden von SMTP/E-Mail werden diese Anhänge hinzugefügt und können nicht entfernt werden.Mule Anhänge bekommen Namen Werte und entfernen

Ich habe versucht, mit Kopie-Anlage mit Platzhalter-Name als * und versuchte auch mit entfernen Anhang durch Angabe von Wert als message.inboundAttachments ['test.json']. Ich habe beobachtet, dass alle Arten von Anlagen (set/copy/remove) für ausgehende Anlagen und nicht für eingehende Anlagen funktionieren.

1) Wie entferne ich Datei aus eingehenden Anlagen? 2) Wie kann der Wert der Nutzlast in Empfänger erhalten, die ich in Sender eingestellt haben als 'einige Daten'

Code:

Absender:

<set-attachment attachmentName="test.json" value="{'Hi':'Hello'}" contentType="text/plain" doc:name="Attachment-JSON"/> 
<set-attachment attachmentName="inputdata.json" value="{'k1':'v1','k2':'v2'}" contentType="text/plain" doc:name="Attachment"/> 
<set-payload value="#['some data']" doc:name="Set Payload"/> 
<http:request config-ref="HTTP_Request_Configuration" path="path2" method="POST" doc:name="HTTP"/> 

Empfänger:

<http:listener config-ref="HTTP_Listener_Configuration" path="path2" allowedMethods="POST" doc:name="HTTP"/> 
<foreach collection="#[message.inboundAttachments]" doc:name="For Each"> 
    <logger message="FileName with key: #[key] ==Initial Payload: ====#[message.payloadAs(java.lang.String)]" level="INFO" doc:name="Logger"/> 
</foreach> 
<remove-attachment attachmentName="#[message.inboundAttachments'test.json']" doc:name="Attachment"/> 
<set-attachment attachmentName="myfile.json" value="#[{'t':'v'}]" contentType="text/plain" doc:name="Attachment-outbound"/> 

In der E-Mail bekomme ich 3 Anhänge. debug-values

Mule Version: 3.8

Antwort

0

Inbound Eigenschaften in Mule kann nicht entfernt werden, weil sie unveränderlich sind. Eingehende Anhänge sind wahrscheinlich keine Ausnahme von dieser Regel. Wie pro Mule doc on message structure:

Inbound Eigenschaften unveränderlich sind, werden automatisch von der Nachrichtenquelle erzeugt und nicht durch den Benutzer eingestellt oder manipuliert werden können.

Für Ihren zweiten Punkt ist es merkwürdig, dass Ihre Nutzlast nicht durch den HTTP-Endpunkt getragen wird. Die Payload auf dem Empfänger scheint NullPayload zu sein, wo Sie explizit "einige Daten" vor dem Aufruf setzen. Versuchen Sie stattdessen <set-payload value="some data" doc:name="Set Payload"/> ohne Verwendung von MEL-Ausdruck festzulegen, und fügen Sie einen Protokollierer hinzu, der # [Nutzlast] anzeigt, bevor Ihr HTTP-Aufruf auf der Senderseite sicherstellt, dass die Nutzdaten richtig eingestellt sind. Ich werde meine Antwort entsprechend bearbeiten.

+0

Ich habe versucht, wie Sie vorgeschlagen, es kommt als Nullwert. – TechFind

+0

Was zeigt Ihr Logger im Senderfluss? –

+0

es ist "einige Daten" in Absender und Empfänger ist es null, wie in Screenshot gezeigt. – TechFind

Verwandte Themen