Apache Kafka için Event Hubs ile Akka Streams’i kullanma
Bu öğreticide, protokol istemcilerinizi değiştirmeden veya kendi kümelerinizi çalıştırmadan Apache Kafka için Event Hubs desteği aracılığıyla Akka Akışlarını nasıl bağlayacağınız gösterilmektedir.
Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Event Hubs ad alanı oluşturma
- Örnek projeyi kopyalama
- Akka Streams yapımcıyı çalıştırma
- Akka Streams tüketicisi çalıştırma
Not
Bu örnek GitHub'da kullanılabilir
Önkoşullar
Bu öğreticiyi tamamlamak için aşağıdaki önkoşullara sahip olduğunuzdan emin olun:
- Apache Kafka için Event Hubs makalesini okuyun.
- Azure aboneliği. Aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Java Development Kit (JDK) 1.8+
- Ubuntu’da JDK’yi yüklemek için
apt-get install default-jdk
komutunu çalıştırın. - JAVA_HOME ortam değişkenini JDK’nin yüklü olduğu klasöre işaret edecek şekilde ayarladığınızdan emin olun.
- Ubuntu’da JDK’yi yüklemek için
- Maven ikili arşivi indirme ve yükleme
- Ubuntu’da Maven’i yüklemek için
apt-get install maven
komutunu çalıştırabilirsiniz.
- Ubuntu’da Maven’i yüklemek için
- Git
- Ubuntu’da Git’i yüklemek için
sudo apt-get install git
komutunu çalıştırabilirsiniz.
- Ubuntu’da Git’i yüklemek için
Event Hubs ad alanı oluşturma
Herhangi bir Event Hubs hizmetinden göndermek veya almak için Bir Event Hubs ad alanı gereklidir. Ayrıntılı bilgi için bkz. Olay hub'ı oluşturma . Event Hubs bağlantı dizesini daha sonra kullanmak üzere kopyaladığınızdan emin olun.
Örnek projeyi kopyalama
Artık bir Event Hubs bağlantı dizeniz olduğuna göre Kafka deposunun Azure Event Hubs kopyalayın ve alt klasöre akka
gidin:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/akka/java
Akka Streams yapımcıyı çalıştırma
Sağlanan Akka Streams üretici örneğini kullanarak Event Hubs hizmetine ileti gönderin.
Event Hubs Kafka uç noktası sağlama
Üretici uygulaması.conf
üreticiyi bootstrap.servers
doğru kimlik doğrulamasıyla Event Hubs Kafka uç noktasına yönlendirmek için ve sasl.jaas.config
değerlerini producer/src/main/resources/application.conf
güncelleştirin.
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}\";"
}
}
Önemli
değerini Event Hubs ad alanınızın bağlantı dizesiyle değiştirin {YOUR.EVENTHUBS.CONNECTION.STRING}
. Bağlantı dizesini alma yönergeleri için bkz . Event Hubs bağlantı dizesi alma. Aşağıda örnek bir yapılandırma verilmişti: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Komut satırından üretici çalıştırma
Üreticiyi komut satırından çalıştırmak için JAR'ı oluşturun ve ardından Maven'ın içinden komutunu çalıştırın (veya Maven kullanarak JAR'yi oluşturun, ardından classpath'e gerekli Kafka JAR'larını ekleyerek Java'da çalıştırın):
mvn clean package
mvn exec:java -Dexec.mainClass="AkkaTestProducer"
Yapımcı konu başlığında test
olay hub'ına olay göndermeye başlar ve olayları stdout'a yazdırır.
Akka Streams tüketicisi çalıştırma
Sağlanan tüketici örneğini kullanarak olay hub'ından iletiler alın.
Event Hubs Kafka uç noktası sağlama
Tüketici uygulaması.conf
tüketiciyi bootstrap.servers
doğru kimlik doğrulamasıyla Event Hubs Kafka uç noktasına yönlendirmek için ve sasl.jaas.config
değerlerini consumer/src/main/resources/application.conf
güncelleştirin.
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}\";"
}
}
Önemli
değerini Event Hubs ad alanınızın bağlantı dizesiyle değiştirin {YOUR.EVENTHUBS.CONNECTION.STRING}
. Bağlantı dizesini alma yönergeleri için bkz . Event Hubs bağlantı dizesi alma. Aşağıda örnek bir yapılandırma verilmişti: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Tüketiciyi komut satırından çalıştırma
Tüketiciyi komut satırından çalıştırmak için JAR'ı oluşturun ve ardından Maven'ın içinden komutunu çalıştırın (veya Maven kullanarak JAR'yi oluşturun, ardından classpath'e gerekli Kafka JAR'larını ekleyerek Java'da çalıştırın):
mvn clean package
mvn exec:java -Dexec.mainClass="AkkaTestConsumer"
Olay hub'ına olaylar varsa (örneğin, üreticiniz de çalışıyorsa), tüketici konu başlığından test
olayları almaya başlar.
Akka Streams hakkında daha ayrıntılı bilgi için Akka Akışları Kafka Kılavuzu'na göz atın.
Sonraki adımlar
Kafka için Event Hubs hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: