2017-05-04 4 views
0

現在、ミュールフローの時間を確認しようとしていますが、私のESB Mule ESBバージョンは3.8.3です。ミュールフローによる処理時間の発見

私は私がすなわちフロー名を取得しようとすると、私はjava.lang.NullPointerExceptionを取得しています、次のようにコードは、

@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; 
} 

をこのタスクのため<custom-inteceptor>を使用して、したがって、AbstractEnvelopeInterceptorクラスを拡張するJavaクラスを作成していますevent.getFlowConstruct().getName()これは上記と同じです

また、処理するフローの時間をチェックするだけでも、出力として0msが与えられ、バッチ処理が実行されません。コンソル

私ははい、私は呼び出しています、次のように流れがある

<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>を置くだけでなく、流れの終了しようとしましたが、まだいくつかの理由で私に0ミリ秒を与える

ていますバッチプロセスの前に<custom-inteceptor>が置かれたときに実行されないバッチプロセスが呼び出されます。

バッチ処理を監視する他の方法があると分かります。

EDIT:

私はAbstractEnvelopeInterceptorクラスを拡張しています、それはそれを使用することに関連するものですか?

答えて

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; 
} 
を作成するには、次のようにコーディングします
関連する問題