DataWeave Transform Message在部署到Cloudhub时转换8192个字节

时间:2016-08-22 12:35:18

标签: mule dataweave

我收到一个带有3个属性的JSON请求,其中一个属性是image的内容,它是字符串格式的base64。收到此请求后,我使用Salesforce连接器创建Salesforce附件。

现在当我通过我的本地Anypoint Studio进行测试时,一切都很好,但是在部署到Cloudhub之后,fileContent(图像内容)被截断为8192字节并将附件创建为已损坏。

我可以看到API正在接收内容,因为消息内容长度是38820(本地和Cloudhub),看起来消息转换后消息丢失了,代码如下:

        <processor-chain doc:name="Processor Chain">
             <dw:transform-message doc:name="Transform Message">
                 <dw:set-payload><![CDATA[%dw 1.0
 %output application/java
 ---
 {
     accountId : payload.accountId,
     name : 'MyProfilePicture',
     ContentType: payload.contentType,
     fileContent : payload.fileContent
 }]]></dw:set-payload>
             </dw:transform-message>

             <set-session-variable variableName="accountId" value="#[payload.accountId]" doc:name="Session Variable - accountId"/>
             <set-session-variable variableName="contentType" value="#[payload.ContentType]" doc:name="Session Variable - contentType"/>
             <logger message="payload.fileContent Before Conversion size #[payload.fileContent.length()], data:#[payload.fileContent] " level="INFO" doc:name="Logger"/>
             <set-session-variable variableName="fileContent" value="#[(org.apache.commons.codec.binary.Base64.decodeBase64(payload.fileContent))]" mimeType="binary/octet-stream" doc:name="Session Variable - fileContent"/>
             <dw:transform-message metadata:id="1676949a-75ba-4e51-82ac-b5788a8e87dc" doc:name="Transform Message">
                 <dw:input-payload/>
                 <dw:set-payload><![CDATA[%dw 1.0
 %output application/java
 ---
 [{
     Name: 'MyProfilePicture',
     ParentId: sessionVars.accountId,
     ContentType: sessionVars.contentType,
     Body: sessionVars.fileContent
 }]]]></dw:set-payload>
             </dw:transform-message>
             <logger message="Payload after Transform Message: #[payload]" level="INFO" doc:name="Logger"/>
             <sfdc:create config-ref="Salesforce__Cfg" type="Attachment" doc:name="Salesforce">
                 <sfdc:objects ref="#[payload]"/>
             </sfdc:create>
         </processor-chain>

有人可以帮忙吗?为什么当我部署到Cloudhub时它只处理8192个字节?

谢谢,

托马斯

1 个答案:

答案 0 :(得分:0)

这可以通过切换到已弃用的DataMapper来修复巨大的base64转换。