[英]Message pre-processing (topic - topic) - Kafka Connect API vs. Streams vs Kafka Consumer?
我們需要對從一個主題到另一個主題的每條消息(用不同的密鑰解密/重新加密)進行一些預處理。
我一直在研究使用Kafka Connect,因為它提供了許多開箱即用的好東西(配置管理,偏移存儲,錯誤處理等)。
但是,也感覺到我將結束實現SourceConnector
和SinkConnector
以僅在兩個主題之間移動數據,並且這些接口都不打算執行Topic A -> (Connector) -> Topic B
。 這是正確的方法嗎? 我應該只使用SinkConnector
並讓SourceTask.put()
進行所有邏輯寫入Kafka嗎?
其他選項是KafkaConsumer/Producer
和或Streams,但是它們將需要其自己的實例來運行邏輯,而不是抵消重試錯誤處理。
提供許多現成的好東西(配置管理,偏移量存儲,錯誤處理等)
配置管理應該比重新部署應用程序更難,但這取決於您可能擁有或可能沒有的任何版本控制或CI / CD管道。
Kafka Producer / Consumer和Streams提供偏移管理,您只需對其進行配置即可執行默認設置以外的任何操作。
錯誤處理已被很好地記錄在案,如果您關心檢測錯誤,請不要一勞永逸。 在嚴重錯誤情況下,Connect本身將停止消耗和生產,而不會重試或跳過消息。
這些接口都不打算做
Topic A -> (Connector) -> Topic B
“
您看過Confluent Replicator(授權產品)嗎? 那是兩個主題之間的Kafka Connect。
否則,您看過MirrorMaker嗎? 這是生產者/消費者對,通常用於在各個群集之間復制數據,但可以與相同的源和目標設置一起使用。 您只需要確保沒有創建反饋循環即可。 您將需要對此應用“自定義邏輯”(並更改主題名稱),並在您的Kafka類路徑上放置一個Handler類。
bin/kafka-mirror-maker.sh
...
--message.handler <String: A custom Message handler which will process
message handler of type every record in-between consumer and
MirrorMakerMessageHandler> producer.
--message.handler.args <String: Arguments used by custom message
Arguments passed to message handler handler for mirror maker.
constructor.>
融合的MirrorMaker文檔
Kafka MirrorMaker文檔
沒有什么可以阻止您實現Connect API,它可能比沒有外部集群管理器的Kafka Streams應用程序更易於管理。 另外,由於Connect是Java庫,因此理論上您可以在其中內部使用Streams庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.