首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >骡子附件返回值

骡子附件返回值
EN

Stack Overflow用户
提问于 2015-05-27 19:04:14
回答 1查看 379关注 0票数 1
代码语言:javascript
复制
<flow..>
    ...
    <jersey:resources doc:name="REST">
            <component class="com.rest.SyncAccountService"/>
    </jersey:resources>
    <set-payload value="#[message.payload]" doc:name="Set Payload"/>
    <set-property propertyName="mimeType" value="application/octet-stream" doc:name="Property"/>
    <set-property propertyName="Content-Disposition" value="attachment;filename=${file_name}" doc:name="Property"/> 
    <set-variable variableName="status" value="Success" doc:name="Status"/>
    <flow-ref name="audit" doc:name="audit"/>
</flow>

<flow name="audit" doc:name="audit">
    <http:inbound-endpoint exchange-pattern="request-response" host="${hostname}" port="${glport}" path="audit" doc:name="HTTP"/>
    <db:insert config-ref="QB_Oracle_Configuration" doc:name="Audit" transactionalAction="NOT_SUPPORTED">
        <db:parameterized-query><![CDATA[INSERT INTO SIAS_AUDIT(ACCESS_ID,EMPLID) VALUES('1','value1')]]></db:parameterized-query>
    </db:insert>
    <set-payload value="===Audit Log ===" name="AuditStatus" doc:name="Status"/>
</flow>

上面的代码工作正常,但它在下载的文件中返回===Audit日志===。相反,我需要显示在rest组件中生成的附件级别上定义的有效负载。

审计流程的目的是在不应该返回任何内容的数据库中记录成功/失败的状态。如果我删除<set-payload value="===Audit Log ===" name="AuditStatus" doc:name="Status"/>

它开始返回java.lang.Number

编辑

获取以下错误后,将其设置为异步:

代码语言:javascript
复制
ERROR 2015-05-27 13:43:51,846 [[qbiif].connector.http.mule.default.receiver.02] org.mule.exception.CatchMessagingExceptionStrategy: 
********************************************************************************
Message               : Unable to process a synchronous event asynchronously. Message payload is of type: MuleResponseWriter$1
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:

    1. Unable to process a synchronous event asynchronously. Message payload is of type: MuleResponseWriter$1 (org.mule.api.MessagingException)
      org.mule.processor.AsyncInterceptingMessageProcessor:132 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
    --------------------------------------------------------------------------------
    Root Exception stack trace:
    org.mule.api.MessagingException: Unable to process a synchronous event asynchronously. Message payload is of type: MuleResponseWriter$1

流量变化:

代码语言:javascript
复制
<flow name="audit" doc:name="audit" processingStrategy="asynchronous">   
    <db:insert config-ref="QB_Oracle_Configuration" doc:name="Audit" transactionalAction="NOT_SUPPORTED">
        <db:parameterized-query><![CDATA[INSERT INTO SIAS_AUDIT(ACCESS_ID,EMPLID) VALUES('1','value1')]]></db:parameterized-query>
    </db:insert>
    <set-payload value="===Audit Log ===" name="AuditStatus" doc:name="Status"/>
</flow>

编辑-2

遵循link后对工作代码的最终更改

代码语言:javascript
复制
<flow name="audit" doc:name="audit">   
    <async>
        <db:insert config-ref="QB_Oracle_Configuration" doc:name="Audit" transactionalAction="NOT_SUPPORTED">
            <db:parameterized-query><![CDATA[INSERT INTO SIAS_AUDIT(ACCESS_ID,EMPLID) VALUES('1','value1')]]></db:parameterized-query>
        </db:insert>
        <set-payload value="===Audit Log ===" name="AuditStatus" doc:name="Status"/>
    </async>
</flow>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-27 20:27:38

  • 删除<set-payload value="#[message.payload]" doc:name="Set Payload"/>:它将消息有效负载设置为自身,这是无用的。
  • <flow-ref name="audit" doc:name="audit"/>封装在一个async作用域中,这样它的响应就不会与JAX组件的响应混淆。
  • 除非您确实需要通过HTTP公开audit流,否则请删除其中的http:inbound-endpoint
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30491033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档