【问题标题】:WSO2 ESB How to measure the response time of call or send mediatorWSO2 ESB 如何测量调用或发送中介的响应时间
【发布时间】:2019-03-29 14:26:35
【问题描述】:

是否有任何官方支持的方式来显示来自 WSO2 ESB 的调用或发送调解器的确切响应时间?

【问题讨论】:

    标签: wso2 wso2esb


    【解决方案1】:

    您可以使用内置的 Synapse 消息上下文属性 轻松完成此操作。 Synapse 消息上下文属性可以以毫秒为单位检索当前时间,您可以将此值设置为流中任何所需点的属性,并在需要时访问它。

    您可以如下设置属性。

    <property name="TIME" expression="get-property('SYSTEM_TIME')" scope="default" type="LONG"/>
    ...
    <log>
     <property name="Time : " expression="get-property('TIME')"/>
    </log>
    ...
    

    假设您已将开始时间和结束时间记录为名为“TIME_START”和“TIME_END”的两个属性,您可以使用脚本中介,如下例所示。

    <script language="js">
     var time1 = mc.getProperty("TIME_START");
     var time2 = mc.getProperty("TIME_END");
     var timeDifference = time2 - time1;
     print("Response Time :  " + timeDifference + " ms ");
     mc.setProperty("RESPONSE_TIME", timeDifference);
    </script>
    

    以下是带有响应时间计算位的示例代理服务。

    <proxy xmlns="http://ws.apache.org/ns/synapse"
           name="SampleTimeProxy"
           transports="https,http"
           statistics="disable"
           trace="disable"
           startOnLoad="true">
       <target>
          <inSequence>
             <property name="TIME_START"
                       expression="get-property('SYSTEM_TIME')"
                       scope="default"
                       type="LONG"/>
          </inSequence>
          <outSequence>
             <send/>
             <property name="TIME_END"
                       expression="get-property('SYSTEM_TIME')"
                       scope="default"
                       type="LONG"/>
             <script language="js">
                  var time1 = mc.getProperty("TIME_START");
                  var time2 = mc.getProperty("TIME_END");
                  var timeDifference = time2 - time1;
                  print("--------------  " + timeDifference + " ms  -----------------");
                  mc.setProperty("RESPONSE_TIME", timeDifference);
             </script>
             <log>
                <property name="Response Time in ms: " expression="get-property('RESPONSE_TIME')"/>
             </log>
          </outSequence>
          <endpoint>
             <address uri="http://localhost:8080/axis2/services/SampleService"/>
          </endpoint>
       </target>
       <publishWSDL uri="http://localhost:8080/axis2/services/SampleService?wsdl"/>
       <description/>
    </proxy>
    

    这里我们将响应时间设置为另一个名为“RESPONSE_TIME”的属性。

    您可以在此博客上阅读更多内容:http://sumedhask.blogspot.com/2013/10/a-simple-way-to-log-time-durations-in.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多