获取名称值的Mule附件并删除

时间:2017-09-27 23:55:58

标签: mule

在flow-1中,即在发送方中,我有两个类型json和文本文件的附件变换器。我正在使用http请求组件调用另一个应用程序(接收器)。在接收器中,我将此附件作为入站附件有效负载而不是出站附件有效负载。 在发送smtp / email时,会添加此附件,但无法将其删除。

我尝试使用带有通配符名称的复制附件作为*,并尝试通过将值作为message.inboundAttachments ['test.json']删除附件。 我观察到,所有类型的附件(设置/复制/删除)都适用于出站附件,而不适用于入站附件。

1)如何从入站附件中删除文件? 2)如何将我在发送方设置的接收器中的有效负载值作为“某些数据”

发件人:

<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"/>

接收器:

<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"/>

在电子邮件中,我收到了3个附件。 debug-values

骡子版本:3.8

1 个答案:

答案 0 :(得分:0)

无法删除Mule中的入站属性,因为它们是不可变的。入站附件可能也不例外。根据{{​​3}}:

  

入站属性是不可变的,由自动生成   消息源,无法由用户设置或操作。

对于您的第二点,奇怪的是您的有效负载不会通过HTTP端点传输。接收器上的有效负载似乎是NullPayload,您可以明确地设置&#34;某些数据&#34;在打电话之前 尝试设置<set-payload value="some data" doc:name="Set Payload"/>而不使用MEL表达式,并在发送方的HTTP调用之前添加一个显示#[payload]的记录器,确保正确设置了有效负载。我会相应地编辑我的答案。