我正在將 Project Reactor 用于非阻塞 IO 資料管道,并且我正在考慮使用 Spring Integration 作為抽象層來管理管道中的所有流和組件。我目前正在使用 Project Reactor 實作 Kafka 消費者,我開始懷疑 Spring Integration 包裝是否會在阻塞和背壓方面損壞我的管道。
我想知道在完整的非阻塞應用程式中使用 Spring Integration 及其類是否被認為是安全的,以及是否有任何陷阱我應該注意。
uj5u.com熱心網友回復:
在大多數情況下,Spring Integration 組件是無狀態的,因此它們在多執行緒(或非阻塞)環境中使用是安全的。如果您使用真正執行阻塞 IO 操作(例如檔案寫入或 JDBC INSERT)的特定通道配接器,您可能會遇到一些問題。在這種情況下,您需要考慮為此類操作切換到不同的執行緒,以免阻塞您的反應流。
請參閱 Project Reactor 中的相應配方:https ://projectreactor.io/docs/core/release/reference/#faq.wrap-blocking
為此,Spring Integration 提供了一個ExecutorChannel和QueueChannel實作的執行緒切換目的。然而,這FluxMessageChannel在某些情況下非常適合。
有限的背壓在 Spring Integration 解決方案中沒有意義,因為一切都被視為流,無限的資料流。因此,在大多數情況下,Spring Integration 依賴于自然的背壓,在我們處理當前之前我們不會請求更多。
請嘗試一下,不要猶豫,給我們一些反饋!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/414763.html
標籤:
