Menggunakan Apache Flink dengan Azure Event Hubs untuk Apache Kafka

Tuturial berikut menunjukkan cara menyambungkan Apache Flink ke event hub tanpa mengubah klien protokol atau menjalankan kluster Anda sendiri. Untuk informasi selengkapnya tentang dukungan Event Hubs untuk protokol konsumen Apache Kafka, lihat Event Hubs for Apache Kafka.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat namespace layanan Azure Event Hubs
  • Mengkloning proyek contoh
  • Jalankan produser Flink
  • Jalankan konsumen Flink

Catatan

Sampel ini tersedia di GitHub

Prasyarat

Untuk menyelesaikan tutorial ini, pastikan prasyarat berikut dipenuhi:

  • Baca melalui Azure Event Hubs untuk artikel Apache Kafka.
  • Langganan Azure. Jika Anda tidak memilikinya,buat akun gratis sebelum Anda mulai.
  • Java Development Kit (JDK) 1.7+
    • Di Ubuntu, jalankan apt-get install default-jdk untuk menginstal JDK.
    • Pastikan untuk mengatur variabel lingkungan JAVA_HOME untuk mengarahkan ke folder tempat JDK dipasang.
  • Unduh dan pasang arsip biner Maven
    • Di Ubuntu, Anda dapat menjalankan apt-get install maven untuk memasang Maven.
  • Git
    • Di Ubuntu, Anda dapat menjalankan sudo apt-get install git untuk memasang Git.

Membuat namespace layanan Azure Event Hubs

Namespace layanan Azure Event Hubs diperlukan untuk mengirim dan menerima dari layanan Azure Event Hubs apa pun. Lihat Membuat pusat aktivitas untuk petunjuk membuat namespace layanan dan pusat aktivitas. Pastikan untuk menyalin string sambungan Azure Event Hubs untuk digunakan nanti.

Mengkloning proyek contoh

Sekarang setelah Anda memiliki string sambungan Azure Event Hubs, kloning Azure Event Hubs untuk repositori Kafka dan navigasi ke flink subfolder:

git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/flink

Menggunakan contoh produser Flink yang disediakan, kirim pesan ke layanan Event Hubs.

Menyediakan titik akhir Event Hubs Kafka

producer.config

Perbarui nilai bootstrap.servers dan sasl.jaas.config dalam producer/src/main/resources/producer.config untuk mengarahkan produser ke titik akhir Event Hubs Kafka dengan autentikasi yang benar.

bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
client.id=FlinkExampleProducer
sasl.mechanism=PLAIN
security.protocol=SASL_SSL
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
   username="$ConnectionString" \
   password="{YOUR.EVENTHUBS.CONNECTION.STRING}";

Penting

Ganti {YOUR.EVENTHUBS.CONNECTION.STRING} dengan string koneksi ke ruang namespace layanan Azure Event Hubs Anda. Untuk instruksi tentang mendapatkan string sambungan, lihat Mendapatkan string sambungan Azure Event Hubs. Berikut adalah contoh konfigurasi: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Jalankan produser dari baris perintah

Untuk menjalankan produser dari baris perintah, hasilkan JAR dan kemudian jalankan dari dalam Maven (atau hasilkan JAR menggunakan Maven, lalu jalankan di Java dengan menambahkan Jar Kafka yang diperlukan ke classpath):

mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestProducer"

Produser sekarang akan mulai mengirim acara ke pusat acara pada topik test dan mencetak acara ke stdout.

Dengan menggunakan contoh konsumen yang disediakan, terima pesan dari event hub.

Menyediakan titik akhir Event Hubs Kafka

consumer.config

Perbarui nilai bootstrap.servers dan sasl.jaas.config dalam consumer/src/main/resources/consumer.config untuk mengarahkan produser ke titik akhir Event Hubs Kafka dengan autentikasi yang benar.

bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
group.id=FlinkExampleConsumer
sasl.mechanism=PLAIN
security.protocol=SASL_SSL
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
   username="$ConnectionString" \
   password="{YOUR.EVENTHUBS.CONNECTION.STRING}";

Penting

Ganti {YOUR.EVENTHUBS.CONNECTION.STRING} dengan string koneksi ke ruang namespace layanan Azure Event Hubs Anda. Untuk instruksi tentang mendapatkan string sambungan, lihat Mendapatkan string sambungan Azure Event Hubs. Berikut adalah contoh konfigurasi: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Jalankan konsumen dari baris perintah

Untuk menjalankan konsumen dari baris perintah, hasilkan JAR dan kemudian jalankan dari dalam Maven (atau hasilkan JAR menggunakan Maven, lalu jalankan di Java dengan menambahkan Jar Kafka yang diperlukan ke classpath):

mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestConsumer"

Jika pusat acara memiliki acara (misalnya, jika produsen Anda juga berjalan), maka konsumen sekarang mulai menerima acara dari topik test tersebut.

Lihat Panduan Konektor Kafka Flink untuk informasi lebih rinci tentang menghubungkan Flink ke Kafka.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang Event Hubs for Kafka, lihat artikel berikut ini: