22 Şubat 2023 Çarşamba

Kafka Connect API

Kendi Kodumdan Kafka Connect Task Kullanmak - Bunu neden yapmak isteyeyim? 
Örneğin bir başka harici kaynağa erişmek için kod yazmak ve idame ettirmek istemiyorum. Hazır Kafka Connect bunu yapıyor benim için. Aradaki tek fark Kafka Connect Source veriyi Kafka topic içiner yazarken ben kendim bir şey yapmak istiyorum

Maven
Şu satırı dahil ederiz
<dependency>
  <groupId>org.apache.kafka</groupId>
  <artifactId>connect-api</artifactId>
  <version>2.8.2</version>
</dependency>
Gradle
Şöyle yaparız
implementation group: 'org.apache.kafka', name: 'connect-api', version: '...'
Örnek
Şöyle yaparız
import org.apache.kafka.connect.connector.ConnectorContext;
import org.apache.kafka.connect.source.SourceConnector;
import org.apache.kafka.connect.source.SourceRecord;
import org.apache.kafka.connect.source.SourceTask;
import org.apache.kafka.connect.source.SourceTaskContext;
import org.apache.kafka.connect.storage.OffsetStorageReader;

public class MyKafkaConnectSource<T> {

  private final SourceConnector connector;
  private final SourceTask task;
  private final Map<String, String> taskConfig;


  public void process() {
    if (!taskInit) {
      task.initialize(...);
      task.start(taskConfig);
      taskInit = true;
    }
    try {
      List<SourceRecord> records = task.poll();
      if (records == null) {
        return;
      }

      for (SourceRecord record : records) {
   ...
}
    } catch (InterruptedException e) {
      ...
    }
  }
}

Hiç yorum yok:

Yorum Gönder