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