Mule记录出站端点信息

时间:2013-10-23 19:03:13

标签: mule interceptor endpoint

编辑:骡子3.3.1

我想记录流量等待外部服务的时间,以及有关该呼叫的一些其他信息。现在,我正在使用我全局声明的自定义组件:

<spring:beans>
    <spring:bean id="idAuth" class="com.ca.eai.esb.component.OutboundLogger">
        <spring:property name="calloutName" value="Authorization"/>
    </spring:bean>
</spring:beans>

然后在我的标注之前和之后调用:

<component>
    <spring-object bean="idAuth"/>
</component>

<https:outbound-endpoint..../>

<component>
    <spring-object bean="idAuth"/>
</component>

它记录时间并记录其他一些事实。

我的问题是,是否有更好的方法?我正在考虑你以前如何登录&amp;通过实现AbstractEnvelopeInterceptor并在流的开头声明它来获取有关流的信息之后。是否存在类似的东西,您可以实现并绑定到端点并根据请求调用方法,然后在响应时调用另一个方法?

2 个答案:

答案 0 :(得分:1)

如果您使用MMC进行部署。您可以使用Custom Business Events消息处理器。为此,您必须在流程中启用均匀跟踪。因此,在Buiness Events下的MMC中可以查看有关您的流和每个消息处理器Processing Time以及日期和所有其他相关信息的详细信息。知道它是3.2版本。不确定旧版本。你可以检查一下。 在流程中启用事件:http://www.mulesoft.org/documentation/display/current/Business+Events 在MMC中查询:http://www.mulesoft.org/documentation/display/current/Tracking+and+Querying+Business+Events

答案 1 :(得分:0)

我假设它是您尝试访问的SOAP Web服务。

您可以在Soap组件端点中使用in-interceptor和out-interceptor组合来记录时间。

1)创建一个in-interceptor并向其中添加一个包含时间
的属性变量(Say:inTime) 2)创建一个out-interceptor,你将采用CurrentTime(减去)inTime来给你时间 3)在控制台中记录或显示结果时间或任何方法供您使用时间。

这是我建议的方法。

如果它不是Web服务(而不仅仅是http端点需要它)

1)在HTTP端点中添加一个Global变换器作为Message属性,用于存储调用
的时间 2)另一个用于响应的全局变换器,作为消息属性,在HTTP端点中存储响应时间
3)使用另一个组件(如带有Groovy表达式的记录器)来查找两次之间的差异并显示它