2017-08-15 52 views
0

我使用Kafka Connect以分佈模式將數據從Web服務發送到Kafka(版本0.10.1)。 poll()method文檔指出:kafka SourceTask類線程的poll()方法是否安全?

輪詢此SourceTask新記錄。如果沒有 數據當前可用,應該阻止此方法。

但是,我不確定是否可以由多個線程通過卡夫卡調用poll()方法。對Web服務的請求非常耗時,它們是以該方法完成的,我希望避免多次發送它們。

有一個question指出版本0.10.2.1-cp2之前,poll()方法可以由不同的線程調用。但是,從release notes我不能確認這種情況是否發生在新版本上。

回答

1

從框架的角度看,Kafka Connect任務不需要是線程安全的,任務不應該假設他們可以通過靜態機制與其他任務和連接器進行通信。請注意,當然可能有多個任務在不同的線程中運行。

至少在Kafka 0.11.0.0中,每個SourceTaskSinkTask實例上的方法都是從專用於該任務的線程中調用的。同一個線程用於任務實例的生命週期,直到它停止。即使任務暫停,線程也會被阻塞。

我的理解是,這是自從至少0.10.1.0以來的行爲,但您必須檢查代碼庫以確保。