Bagikan melalui


Menggunakan Akka Streams dengan Pusat Aktivitas 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 Pusat Aktivitas
  • 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 artikel Azure Event Hubs untuk 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.
  • Mengunduh dan menginstal 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 Pusat Aktivitas

Namespace layanan 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 sambungan 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 nama Azure Event Hubs. 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";

Menjalankan produser dari baris perintah

Untuk menjalankan produsen dari baris perintah, buat JAR dan kemudian jalankan dari dalam Maven (atau hasilkan JAR menggunakan Maven, lalu jalankan di Java dengan menambahkan file Kafka Java Archive (JAR) 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 dalam consumer/src/main/resources/application.conf untuk mengarahkan produser ke titik akhir 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 nama Azure Event Hubs. 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, buat 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="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 Azure Event Hubs untuk Kafka, lihat artikel berikut ini: