簡體   English   中英

Spring Integration - 通道和線程

[英]Spring Integration - channels and threads

我想了解 Spring Integration 中如何處理消息:串行或並行。 特別是我有一個帶有輪詢器和 HTTP 出站網關的入站通道適配器。 我猜拆分器、轉換器、標頭豐富器等不會產生自己的線程。

我可能會錯過它們,但是這些細節是否在文檔中的某處指定?

我還可以以編程方式獲取系統中的所有通道嗎?

通道類型在此處描述

默認通道類型為Direct (端點運行在調用者的線程上); QueueChannelExcecutorChannel提供異步操作。

context.getBeansOfType(MessageChannel.class)

實際上“線程”取決於MessageChannel類型:

例如DirectChannel ( <channel id="foo"/> - 默認配置) 不對線程做任何事情,只是將消息從send轉移到訂閱者來處理它。 如果處理程序是AbstractReplyProducingMessageHandler ,它將其結果發送到outputChannel ,如果最后一個也是DirectChannel ,則工作在同一個線程中完成。

另一個示例是關於您的inbound channel adapter 在后台有一個計划任務,它在調度程序線程中執行,如果您的輪詢經常是下一個輪詢任務,則可能在新線程中執行。

最后一條“規則”對於QueueChannel是可以接受的:它們的handle工作也由調度程序線程完成。

ExcecutorChannel只是將handle任務放置到Executor

您可以在 Gary Russell 在他的回答中提供的參考手冊中找到所有其他信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM