[英]Spring Integration - channels and threads
我想了解 Spring Integration 中如何處理消息:串行或並行。 特別是我有一個帶有輪詢器和 HTTP 出站網關的入站通道適配器。 我猜拆分器、轉換器、標頭豐富器等不會產生自己的線程。
我可能會錯過它們,但是這些細節是否在文檔中的某處指定?
我還可以以編程方式獲取系統中的所有通道嗎?
通道類型在此處描述。
默認通道類型為Direct
(端點運行在調用者的線程上); QueueChannel
和ExcecutorChannel
提供異步操作。
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.