如何建立自定義Apache Kafka聯結器(Kafka Connectors) - Prashanna

banq發表於2020-07-04

Kafka Connect是一個框架,可幫助Kafka連線外部系統,例如資料庫,檔案系統等,反之亦然。
我們處理兩種型別的聯結器:
  1. 源聯結器:這種型別的聯結器有助於將資料從外部系統簡化為Kafka Topic。
  2. 接收器聯結器:這種型別的聯結器有助於將資料從Kafka Topic簡化到外部系統。

聯結器通常將給定的工作劃分為較小的任務,並在內部將其分配給工人。工作者是執行聯結器分配的任務的過程。
市場上有很多這類聯結器可供使用,可在Confluent官方網站:https://www.confluent.io/hub/

自定義Kafka聯結器的需求在兩種情況下出現:
  1. 當現有的Kafka聯結器無法滿足您的需求時,將其引入用例的目的
  2. 許可問題

因此,引入了“定製Kafka聯結器”的概念,以建立可幫助使用者滿足要求的聯結器,並退出複雜的許可策略。

注意原則:
建立一個Maven Java專案,並將以下maven依賴項新增到pom.xml檔案中。

<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>connect-api</artifactId>
</dependency>


1.配置類:此類用於描述將用於我們的聯結器的配置屬性。Java類需要擴充套件AbstractConfig類。

import org.apache.kafka.common.config.AbstractConfig;


2. SourceConnector或SinkConnector類:此類在聯結器的實現邏輯所駐留的抽象級別上。根據建立的聯結器的型別,應擴充套件相應的類。

import org.apache.kafka.connect.sink.SinkTask;
import org.apache.kafka.connect.source.SourceTask;


這些類的下面方法應該被實現覆蓋:

1)start
2)stop
3)taskClass
4)taskConfigs
5)config
6)version


3.SourceTask或SinkTask類:此類是任務功能(聯結器用途)所在的位置。根據建立的聯結器的型別,應擴充套件相應的類。

import org.apache.kafka.connect.sink.SinkConnector;
import org.apache.kafka.connect.source.SourceConnector;

需要覆蓋方法:

1)start
2)stop
3)poll or put(Based on the Connector Type)
4)version


除了這些類之外,該聯結器還需要兩個屬性檔案才能在Ka​​fka Environment中執行。
  1. Config.properties:此檔案將包含執行聯結器所需的配置。聯結器的配置類別將使用此資料進行填充。
  2. Standalone.properties或Distributed.properties:Kafka環境通常以Standalone模式或Distributed(Clustered)模式設定。根據模式的型別,各個檔案將填充有所需屬性,例如bootstrap.servers,rest.port,group.id等。


詳細參考:
https://docs.confluent.io/current/connect/devguide.html
 

相關文章