Menggunakan Akka Streams dengan Azure Event Hubs untuk Apache Kafka

Tutorial ini menunjukkan cara menghubungkan Akka Streams melalui dukungan Azure Event Hubs untuk Apache Kafka tanpa mengubah klien protokol atau menjalankan klaster Anda sendiri.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat namespace layanan Azure Event Hubs
  • Mengkloning proyek contoh
  • Menjalankan produser Akka Streams
  • Menjalankan konsumen Akka Streams

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 memulai.
  • Kit Pengembangan Java (JDK) 1.8+
    • 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 Azure Event Hubs diperlukan untuk mengirim dan menerima dari layanan Azure Event Hubs apa pun. Lihat Membuat hub acara untuk informasi selengkapnya. Pastikan untuk menyalin string koneksi Azure Event Hubs untuk digunakan nanti.

Mengkloning proyek contoh

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

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

Menjalankan produser Akka Streams

Menggunakan contoh produser Akka Streams yang disediakan, kirim pesan ke layanan Azure Event Hubs.

Menyediakan titik akhir Azure Event Hubs Kafka

application.conf produsen

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

akka.kafka.producer {
    #Akka Kafka producer properties can be defined here


    # Properties defined by org.apache.kafka.clients.producer.ProducerConfig
    # can be defined in this configuration section.
    kafka-clients {
        bootstrap.servers="{YOUR.EVENTHUBS.FQDN}:9093"
        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 lalu 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="AkkaTestProducer"

Produser sekarang akan mulai mengirim aktivitas ke event hub pada topik test dan mencetak acara ke stdout.

Menjalankan konsumen Akka Streams

Menggunakan contoh konsumen yang disediakan, terima pesan dari event hub.

Menyediakan titik akhir Azure Event Hubs Kafka

application.conf konsumen

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

akka.kafka.consumer {
    #Akka Kafka consumer properties defined here
    wakeup-timeout=60s

    # Properties defined by org.apache.kafka.clients.consumer.ConsumerConfig
    # defined in this configuration section.
    kafka-clients {
       request.timeout.ms=60000
       group.id=akka-example-consumer

       bootstrap.servers="{YOUR.EVENTHUBS.FQDN}:9093"
       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 lalu 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="AkkaTestConsumer"

Jika event hub memiliki aktivitas (misalnya, jika produser juga sedang berjalan), maka konsumen mulai menerima aktivitas dari topik test.

Periksa Panduan Akka Streams Kafka untuk informasi selengkapnya tentang Akka Streams.

Langkah berikutnya

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