如何在Mule中记录或处理原始有效负载消息

时间:2012-03-22 12:44:04

标签: mule

<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的原始消息。我如何在流程中实现这一目标?

3 个答案:

答案 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可以记录有效负载。

[payload],我们在控制台中使用此日志有效负载的记录器组件。

答案 2 :(得分:0)

因为您需要在所有情况下从 InputQueue LogInputQueue 发送原始消息,如您所述,您需要做什么是: -
1.从选择块中的所有情况中删除<jms:outbound-endpoint queue="LogInputQueue"/> 2.将原始有效负载从 InputQueue 存储到变量中,方法是将其置于JMS入站端点之后 3.在流程结束时,在选择路由器之后,从存储原始有效负载的变量中设置有效负载组件中的有效负载 4.现在将<jms:outbound-endpoint queue="LogInputQueue"/>放在设置的有效负载组件之后。

通过这种方式,您可以根据要求将原始有效负载发送到 LogInputQueue