2017-06-28 96 views
0

我想這個邏輯在Apache駱駝的Java應用程序解碼: ReadFromActiveMq文件,並將它們發送到直接的路線DirectRoute 雖然existsFilesInFolder { retrytoLoadThemForever()//雖然錯誤出現 - >手動動作 要求 } 消耗DirectRoute消息。暫停根據文件夾內容的Apache的駱駝航線

在java中我有這樣做:

onManualDataReceivedException().maximumRedeliveries(-1) 

from("file:" + recoverableErrorsFolder +"?noop=true").to("bean:processManualFilesDatabean"); 
//If there is an error in manual process i throw ManualDataReceivedException 

from ("direct:DirectRoute") 
     .to("bean:processDirectQueueBean"); 

private OnExceptionDefinition onManualDataReceivedException() { 
    return onException(ManualDataReceivedException.class); 
} 

如何暫停直接:DirectRoute消費是否有recoverableErrorsFolder文件夾中的文件?

回答

1

您可以使用ControlBus組件在運行時使用它們的routeId啓動/停止路徑。

本示例說明如何在處理文件時停止路由並在處理後重新啓動它。您可以附加開始行動到onCompletion回調並實現更健壯的邏輯。

from("direct:DirectRoute") 
    .routeId("DR")  
    .to("bean:processDirectQueueBean"); 

from("file:" + recoverableErrorsFolder +"?noop=true") 
    .to("controlbus:route?routeId=DR&action=stop") 
    .to("bean:processManualFilesDatabean") 
    .to("controlbus:route?routeId=DR&action=start"); 
+0

That worked.Thanks – user4919313