簡體   English   中英

彈簧集成通道是單螺紋的嗎?

[英]are spring integration channels single threaded?

如果我有休息服務,那么我可以確定每個請求都由一個單獨的線程處理,並且這些線程可以並行運行。

如果在Spring集成中將rest(http)服務用作入站通道,會發生什么情況。 將仍然並行處理每個請求,還是將請求放置在隊列中……這將更像單線程

普通通道(DirectChannel)使用與將對象放入通道的對象相同的執行線程(它們基本上是抽象方法調用的一種方式),因此它們是多線程的。

文檔

除了是最簡單的點對點通道選項之外,它最重要的功能之一就是它使單個線程能夠在通道的“兩側”執行操作。 例如,如果處理程序已訂閱DirectChannel,則在send()方法調用返回之前,將消息發送到該通道將直接在發送者線程中觸發該處理程序的handleMessage(Message)方法的調用。


編輯

您的問題很清楚。 當您在通道中設置Queue元素時,spring會自動將其轉換為QueueChannel( 文檔 ),據我所記得,當時只有一個線程能夠從隊列中使用。 如果您需要“真實的”隊列語義(多個生產者線程和消費者線程),則可以使用ExecutorChannel

使用Rest(http)時,線程由servlet容器管理; 容器支持多個並發請求,但是並發設置是在容器中完成的,而不是在Spring Integration中完成的。

使用默認的直接通道,容器線程將在容器線程上同時調用Spring Integration流。

暫無
暫無

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

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