WSO2 ESB Как измерить время ответа на звонок или отправить посреднику - PullRequest
0 голосов
/ 29 марта 2019

Есть ли какой-либо официальный поддерживаемый способ показать точное время ответа на вызов или отправить посредника из WSO2 ESB?

1 Ответ

1 голос
/ 29 марта 2019

Вы можете использовать встроенное Свойство контекста сообщения 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

...