2017-10-18 56 views
0

在我的代碼我有一個入站適配器通道和服務激活我要不要服務激活與出出境信道連接,Spring集成服務激活無輸出通道

代碼我使用

<file:inbound-channel-adapter id="filesIn" 
     directory="E:/usmandata/logs/input" filter="onlyLogFiles" 
     auto-startup="true"> 
     <int:poller id="poller" fixed-delay="5000" /> 
    </file:inbound-channel-adapter> 

    <int:service-activator input-channel="filesIn" ref="handler" /> 

回答

1

如在該文檔中所提及的,簡單地使其作爲void返回類型或將其設置爲nullChannel

如果該方法返回結果,並且沒有「輸出信道」的定義,該框架將然後檢查該請求消息」 s的replyChannel頭部值。如果該值可用,則會檢查其類型。如果它是MessageChannel,則回覆消息將被髮送到該頻道。如果它是一個字符串,那麼端點將嘗試將通道名稱解析爲通道實例。如果通道無法解析,則會拋出DestinationResolutionException。它可以被解決,消息將被髮送到那裏。如果請求消息沒有replyChannel頭,並且回覆對象是消息,則會爲目標目標查詢其replyChannel頭。這是Spring Integration中用於請求回覆消息的技術,也是返回地址模式的一個例子。

如果您的方法返回一個結果,並且您想要放棄它並結束流程,則應該將輸出通道配置爲發送到NullChannel。爲了方便起見,框架註冊名爲nullChannel的框架。有關更多信息,請參見第4.1.6節「特殊頻道」。

服務激活器是不需要產生回覆消息的組件之一。如果您的方法返回null或具有void返回類型,則Service Activator將在方法調用後退出,但不會發出任何信號。此行爲可以通過AbstractReplyProducingMessageHandler.requiresReply選項進行控制,該選項在使用XML名稱空間進行配置時也顯示爲require-reply。如果該標誌設置爲true並且該方法返回null,則引發ReplyRequiredException。

相關問題