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.
- Di Ubuntu, jalankan
-
Mengunduh dan menginstal arsip biner Maven
- Di Ubuntu, Anda dapat menjalankan
apt-get install maven
untuk memasang Maven.
- Di Ubuntu, Anda dapat menjalankan
-
Git
- Di Ubuntu, Anda dapat menjalankan
sudo apt-get install git
untuk memasang Git.
- Di Ubuntu, Anda dapat menjalankan
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: