2015-05-14 61 views
0

我需要一些提示如何解決彈簧集成問題。彈簧集成異步網關響應處理

我有一個網關接口。

public interface OrderGateway { 
    Future<Response> process(Request value); 
} 

我通過網關發送請求消息。 ValidationService應該檢查數據是否正確。如果是,它應該將消息轉發給OrderService。 OderService將生成一個響應。 但是,如果請求數據不正確,則ValidationService應該生成一個響應對象,將其返回給網關。在這種情況下,OrderService不應該被調用。什麼樣的消息端點將是ValidationService?它會變成一個路由器嗎?我想避免處理這個拋出異常。 Spring Integration如何解決這種情況?

+--------------------------------+ 
    v        |       
Async Gateway --> CH --> ValidationService --> CH --> OrderService + 
^                | 
    |---------------------------------------------------------------|                 

在此先感謝。

回答

0

處理此問題的常規方法是拋出異常並在網關上添加error-channel;處理那裏的錯誤並從那裏返回驗證響應。

如果那樣做不合適,那麼,一個有效載荷類型的路由器就可以工作,並將驗證結果發送到一個「通往無處的橋」(一個只有輸入通道的橋),並且框架將路由回到網關。

+0

投擲例外作品找到我。非常感謝。 唯一的小問題是,例外情況通過「o.s.integration.handler.LoggingHandler」寫入系統日誌中。 如何移除系統?配置自定義日誌處理程序的正確方法是什麼? – Manuel

+0

不;只需使用您自己的「錯誤通道」而不是默認的「errorChannel」。 –

+0

乾杯!它的工作! – Manuel