骡子:使用Spring bean方法丰富标题

时间:2015-01-04 07:49:24

标签: mule mule-studio mule-component

我正在尝试使用spring bean使用会话变量文本代码来丰富mule消息。流程代码

<spring:beans>
    <spring:bean id="enrichService" class="com.enrich.EnricherService"/>
</spring:beans>
<flow name="HeaderEnricherFlow1" doc:name="HeaderEnricherFlow1">
    <file:inbound-endpoint path="C:/txtFile" responseTimeout="1000" doc:name="Inbound File"/>
    <byte-array-to-string-transformer doc:name="Byte Array to String"/>
    <enricher target="#[sessionVars:TextCode]" doc:name="Header Enricher">

     <core:component>
     <spring-object bean="enrichService"/>
     </core:component>
    </enricher>
    <logger level="INFO" doc:name="Logger" message="#[sessionVars:TextCode]"/>
</flow>

EnrichService方法

public String enrichmentResource(@Payload String payload){

    System.out.println("Payload:::::::::" + payload);

    String result="Text3";

    return result;
}

我从富集服务类EnrichService方法enrichmentResource返回我需要在会话变量TextCode中设置的值,但是它没有被设置。

2 个答案:

答案 0 :(得分:1)

您提到的格式是正确的,使用enritcher是最清晰的方式或写这个。但是我会考虑删除组件元素的核心前缀,因为它已经使用ns核心作为根命名空间,这是多余的。

另外,假设您没有特殊的入口点解析器,我猜你有一个单独的方法或一个非常简单的类,为了提高性能,我要么设置一个快速入口点解析器,要么只使用invoke消息处理器。如果性能非常相关,您可以从那里接收消息和设置属性作为参数,而不是使用enritcher。

答案 1 :(得分:0)

我通过使用表达式“#[sessionVars ['TextCode']]”实现了这一点。早先用错误的语法“#[sessionVars:TextCode]”来表达表达式。