我正在尝试使用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中设置的值,但是它没有被设置。
答案 0 :(得分:1)
您提到的格式是正确的,使用enritcher是最清晰的方式或写这个。但是我会考虑删除组件元素的核心前缀,因为它已经使用ns核心作为根命名空间,这是多余的。
另外,假设您没有特殊的入口点解析器,我猜你有一个单独的方法或一个非常简单的类,为了提高性能,我要么设置一个快速入口点解析器,要么只使用invoke消息处理器。如果性能非常相关,您可以从那里接收消息和设置属性作为参数,而不是使用enritcher。
答案 1 :(得分:0)
我通过使用表达式“#[sessionVars ['TextCode']]”实现了这一点。早先用错误的语法“#[sessionVars:TextCode]”来表达表达式。