我目前正在尝试检查骡子流的时间,如果有帮助,我的Mule ESB版本是3.8.3。
我正在使用<custom-inteceptor>
来完成这项任务,从而创建了一个扩展AbstractEnvelopeInterceptor类的Java类,代码如下,
@Override
public MuleEvent last(MuleEvent event, ProcessingTime time, long startTime, boolean exceptionWasThrown)
throws MuleException
{
long endTime = System.currentTimeMillis();
if(logger.isInfoEnabled())
{
logger.info("+++++++++++++++++++++++++++++++++++++++++++++"
+" Flow : "+event.getFlowConstruct().getName()
+ " Started @ " +startTime+" Ended @ "+endTime
+" Processing Time : "+(endTime - startTime)+" ms "
+ "+++++++++++++++++++++++++++++++++++++++++++++");
}
return event;
}
我在尝试获取流程名称时收到java.lang.NullPointerException
,即event.getFlowConstruct().getName()
,如上所示
即使我将其删除以仅检查流程处理所花费的时间,它也会给出0 ms作为输出,同样我的批处理过程在consol中打印后也不会执行
我试图将<custom-inteceptor>
置于开始和流程的结尾,但由于某种原因仍然给我0毫秒
流程如下,
<flow name="batch-sample-1Flow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/bs" doc:name="HTTP"/>
<custom-interceptor class="com.utility.CustomTimeInteceptor"/>
<batch:execute name="batch-sample-1Batch" doc:name="batch-sample-1Batch"/>
</flow>
是的我正在调用批处理过程,在调用批处理之前放置<custom-inteceptor>
时不会执行该批处理。
如果有其他方法可以监控批处理过程,我们将不胜感激。
修改
我正在扩展AbstractEnvelopeInterceptor
类是否与使用它有关?
答案 0 :(得分:0)
只需使用类 AbstractInterceptingMessageProcessor 和拦截器接口来创建自定义拦截器......并执行此类编码以创建自定义拦截器
private static Log logger = LogFactory.getLog(TimerInterceptor.class);
public MuleEvent process(MuleEvent event) throws MuleException {
long startTime = System.currentTimeMillis();
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date stdate = new Date();
String start = dateFormat.format(stdate);
System.out.println(start);
MuleEvent resultEvent = processNext(event);
Date enddate = new Date();
String end = dateFormat.format(enddate);
if (logger.isInfoEnabled()) {
long executionTime = System.currentTimeMillis() - startTime;
logger.info("Custom Timer : "+resultEvent.getFlowConstruct().getName() + " Start at "+start+" and end at "+end +" it took " + executionTime + "ms to process event [" + resultEvent.getId() + "]");
}
return resultEvent;
}
答案 1 :(得分:0)
Mule已为此内置了组件let points, bounds;
points = bounds = [];
for(let i=0; i < this.markers.length; i++){
if(!this.map.hasLayer(this.markers[i])){
this.map.addLayer(this.markers[i]);
let p = new L.latLng(this.markers[i].getLatLng().lat, this.markers[i].getLatLng().lng);
points.push(p);
this.oms.addMarker(this.markers[i])
};
}
this.map.fitBounds([points]);
。我可以放在流程中。
CURRENT_HEROKU_USER="$CURRENT_HEROKU_USER" rails c --app my-app-name
> Running CURRENT_HEROKU_USER=chap@heroku.com rails c...
ENV['CURRENT_HEROKU_USER']
> "chap@heroku.com"
处理时间将成为应用程序日志的一部分。在https://docs.mulesoft.com/mule-runtime/3.9/using-interceptors#timer-interceptor
中了解更多信息