<flow>
<jms:inbound-endpoint queue="InputQueue"/>
<component class="MyComponent"/>
<choice>
<when expression="/Response/Status/Success" evaluator="xpath">
<jms:outbound-endpoint queue="LogInputQueue"/>
<jms:outbound-endpoint queue="SuccessQueue"/>
</when>
<when expression="/Response/Status/Error" evaluator="xpath">
<jms:outbound-endpoint queue="LogInputQueue"/>
<jms:outbound-endpoint queue="ErrorQueue"/>
</when>
<otherwise>
<jms:outbound-endpoint queue="LogInputQueue"/>
<jms:outbound-endpoint queue="ExceptionQueue"/>
</otherwise>
</choice>
</flow>
在此流程中,MyComponent返回成功消息作为响应或错误响应或异常?
在所有情况下,我都需要在LogInputQueue中记录来自InputQueue的原始消息。我如何在流程中实现这一目标?
答案 0 :(得分:2)
您的意思是创建日志文件吗?在这种情况下,您必须使用slf4j实现log4j并使用行
<logger level="log_level" category="your_category" message="#[message:payload]"/>
其中log_level是您所需的日志级别 - “错误”,“调试”,“信息”等......
your_category是log4j.properties文件中定义的日志类别(实际上是可选的)
和message =“#[expression:value]”是您要记录的消息,作为表达式:scope:组合键。范围在这里是可选的。
答案 1 :(得分:0)
使用log4j或slf4j可以记录有效负载。
答案 2 :(得分:0)
因为您需要在所有情况下从 InputQueue 向 LogInputQueue 发送原始消息,如您所述,您需要做什么是: -
1.从选择块中的所有情况中删除<jms:outbound-endpoint queue="LogInputQueue"/>
2.将原始有效负载从 InputQueue 存储到变量中,方法是将其置于JMS入站端点之后
3.在流程结束时,在选择路由器之后,从存储原始有效负载的变量中设置有效负载组件中的有效负载
4.现在将<jms:outbound-endpoint queue="LogInputQueue"/>
放在设置的有效负载组件之后。
通过这种方式,您可以根据要求将原始有效负载发送到 LogInputQueue 。