簡體   English   中英

消息預處理(主題-主題)-Kafka Connect API與流,Kafka Consumer?

[英]Message pre-processing (topic - topic) - Kafka Connect API vs. Streams vs Kafka Consumer?

我們需要對從一個主題到另一個主題的每條消息(用不同的密鑰解密/重新加密)進行一些預處理。

我一直在研究使用Kafka Connect,因為它提供了許多開箱即用的好東西(配置管理,偏移存儲,錯誤處理等)。

但是,也感覺到我將結束實現SourceConnectorSinkConnector以僅在兩個主題之間移動數據,並且這些接口都不打算執行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.

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