0

我的工作是從遠程數據庫中獲取數據並將它們加入到一個kafka流(富集)中。我現在想要做的是定期輪詢遠程數據庫到本地內存。我認爲當這個輪詢操作發生時,kafka流應該暫時停止。我現在的想法是有這樣的事情:這是一個阻止kafkastreams的正確方法嗎?

@Autowired 
private KafkaStreams streams; 

@Scheduled(cron = "0 0/15 * * * *") // this method is scheduled to run every 15 minutes 
public synchronized void process() { 
    streams.close(); 
    processPolling(); 
    streams.start(); 
} 

當方法開始運行,流應停止加工,然後將輪詢作業完成後運行,流應該重啓進程。

這是一個很好的做法嗎?任何改進建議?

+1

卡夫卡聽起來不像您的要求正確的工具。如果您需要停止並重新啓動流式處理,那麼這只是一個批處理作業。 – LuckyGuess

回答

3

更好的方法是將遠程數據流傳輸到Kafka主題中,然後在Streams作業中使用這些主題。 您可以使用JDBC Connector,或者根據您的源數據庫的不同,有多種CDC選項。

啓動和停止流使其成爲一個批處理過程,其流處理通過設計避免了相關的考慮和複雜性。

+0

我需要根據流中記錄的一個字段查詢遠程數據庫數據,所以我想將它們存儲爲類似於結構的散列圖以提高查詢性能。如果使遠程數據庫數據成爲流,我該如何處理查詢?謝謝。 – zonyang

+0

這是關於有效設計和使用Kafka流的單獨問題。有StackOverflow,還有一個Confluent Platform郵件列表和Slack小組以獲取幫助:https://groups.google.com/forum/#!forum/confluent-platform/ https://slackpass.io/confluentcommunity –

相關問題