2013-08-22 23 views
0

我只是試圖在異常發生後繼續處理消息。我知道,可以從xml使用'<'續''''<'/ continued>'聲明,但我想隱藏xml文檔中的複雜性。而且不想改變我們迄今爲止建立的每個模塊。因此我想通過java在中心位置設置它。在java端異常後繼續消息流

案例: 如果發生異常,將從onException塊調用java bean,該塊會分析異常並檢查異常的類型。現在我想配置一下,如果它是一個ExampleException,那麼該異常應該被忽略,路由繼續。只是模擬處理,可以通過ExchangeHelper進行設置,但區別在於,處理的只是一個簡單的頭文件,而不是。

有沒有辦法在實際交換對象上繼續使用java?

在此先感謝!

斯特凡

回答

0

我發現下面,並給它一個嘗試。

Exception caught = exchange.getException();

// we continue so clear any exceptions 
    exchange.setException(null); 
    // clear rollback flags 
    exchange.setProperty(Exchange.ROLLBACK_ONLY, null); 
    // reset cached streams so they can be read again 
    MessageHelper.resetStreamCache(exchange.getIn()); 

    // its continued then remove traces of redelivery attempted and caught exception 
    exchange.getIn().removeHeader(Exchange.REDELIVERED); 
    exchange.getIn().removeHeader(Exchange.REDELIVERY_COUNTER); 
    exchange.getIn().removeHeader(Exchange.REDELIVERY_MAX_COUNTER); 
    exchange.removeProperty(Exchange.FAILURE_HANDLED); 
    // keep the Exchange.EXCEPTION_CAUGHT as property so end user knows the caused exception