【问题标题】:Mule attachments getting name values and removeMule 附件获取名称值并删除
【发布时间】:2017-09-29 16:22:36
【问题描述】:

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

我尝试使用通配符名称为 * 的复制附件,并尝试通过将值作为 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 个附件。

骡子版本:3.8

【问题讨论】:

    标签: mule


    【解决方案1】:

    Mule 中的入站属性无法删除,因为它们是不可变的。入站附件可能也不例外。根据Mule doc on message structure

    入站属性是不可变的,由 消息源,用户不能设置或操作。

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

    【讨论】:

    • 它在发送者中是“一些数据”,在接收者中它为空,如屏幕截图所示。
    猜你喜欢
    • 1970-01-01
    • 2019-04-11
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多