Spring Cloud Azure Kafka desteği
Bu makale şunlar için geçerlidir: ✔️ Sürüm 4.14.0 ✔️ Sürüm 5.8.0
Kafka için Spring Cloud Azure, 4.3.0 sürümünden itibaren kimlik doğrulaması yapmak ve Azure Event Hubs'a bağlanmak için çeşitli kimlik bilgisi türlerini destekler.
Desteklenen Kafka sürümü
Starter'ın geçerli sürümü Java 8 veya üzerini kullanan Apache Kafka İstemcileri 2.0.0 ile uyumlu olmalıdır.
Desteklenen kimlik doğrulama türleri
Aşağıdaki kimlik doğrulama türleri desteklenmektedir:
- Düz bağlantı dizesi kimlik doğrulaması
- Doğrudan bağlantı dizesi kimlik doğrulaması
- ARM tabanlı bağlantı dizesi kimlik doğrulaması
- OAuth kimlik bilgisi kimlik doğrulaması
- Yönetilen kimlik doğrulaması
- Kullanıcı adı/parola kimlik doğrulaması
- Hizmet sorumlusu kimlik doğrulaması
DefaultAzureCredential
kimlik doğrulaması
Nasıl çalışır?
OAuth kimlik bilgisi kimlik doğrulaması
Bu bölümde Spring Cloud Azure OAuth kimlik doğrulamasının genel iş akışı açıklanmaktadır.
Spring Cloud Azure, uygulama kimlik doğrulaması yapılandırmasına bağlı olarak ilk olarak aşağıdaki kimlik bilgileri türlerinden birini oluşturur:
ClientSecretCredential
ClientCertificateCredential
UsernamePasswordCredential
ManagedIdentityCredential
Bu tür kimlik bilgilerinin hiçbiri bulunmazsa, aracılığıyla kimlik bilgisi zinciri DefaultAzureTokenCredential
uygulama özelliklerinden, ortam değişkenlerinden, yönetilen kimlikten veya IDE'lerden kimlik bilgilerini almak için kullanılır. Ayrıntılı bilgi için bkz . Spring Cloud Azure kimlik doğrulaması.
Düz bağlantı dizesi kimlik doğrulaması
bağlantı dizesi kimlik doğrulama modu için doğrudan bağlantı dizesi kimlik doğrulamasını kullanabilir veya bağlantı dizesi almak için Azure Resource Manager'ı kullanabilirsiniz. Kullanım hakkında daha fazla bilgi için bağlantı dizesi kimlik doğrulaması için temel kullanım bölümüne bakın.
Dekont
4.3.0 sürümünden bu yana bağlantı dizesi kimlik doğrulaması, OAuth kimlik doğrulamaları için kullanım dışı bırakılmıştır.
Yapılandırma
OAuth kimlik doğrulaması ile Kafka desteği kullanılırken yapılandırılabilir özellikler
Kafka için Spring Cloud Azure aşağıdaki iki yapılandırma seçeneğini destekler:
- Event Hubs için Spring Cloud Azure Kafka özellikleri.
- ve
profile
ön ekleriylespring.cloud.azure
genel kimlik doğrulama yapılandırma seçeneklericredential
. - Kafka'ya özgü düzey yapılandırmaları. Kafka düzeyinde yapılandırmalar, farklı ön ekleri olan ,
consumer
,producer
veyaadmin
kapsamları için Spring Boot ve Spring Cloud Stream bağlayıcıları içincommon
de kullanılabilir.
Genel özellikler aracılığıyla com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties
kullanıma sunulur. Kafka'ya özgü özellikler (Spring Boot) ve org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties
(Spring Cloud Stream bağlayıcısı) aracılığıyla org.springframework.boot.autoconfigure.kafka.KafkaProperties
kullanıma sunulur.
Aşağıdaki listede desteklenen tüm yapılandırma seçenekleri gösterilmektedir.
Event Hubs için Spring Cloud Azure Kafka özellikleri.
- Özellik:
spring.cloud.azure.eventhubs.kafka.enabled
- Açıklama: Kafka için Azure Event Hubs'a kimlik bilgisi ücretsiz bağlantısının etkinleştirilip etkinleştirilmeyileceği, varsayılan değerdir
true
.
- Özellik:
Spring Cloud Azure genel kimlik doğrulaması yapılandırma seçenekleri
- Önek:
spring.cloud.azure
- Desteklenen seçenekler:
spring.cloud.azure.credential.*
,spring.cloud.azure.profile.*
Genel yapılandırma seçeneklerinin tam listesi için bkz . Genel yapılandırma özellikleri.
- Önek:
Spring Boot Kafka ortak yapılandırması
- Önek:
spring.kafka.properties.azure
- Örnek:
spring.kafka.properties.azure
.credential.*
- Önek:
Spring Kafka tüketici yapılandırma seçenekleri
- Önek:
spring.kafka.consumer.properties.azure
- Örnek:
spring.kafka.consumer.properties.azure
.credential.*
- Önek:
Spring Kafka üretici yapılandırma seçenekleri
- Önek:
spring.kafka.producer.properties.azure
- Örnek:
spring.kafka.producer.properties.azure
.credential.*
- Önek:
Spring Kafka yönetici yapılandırma seçenekleri
- Önek:
spring.kafka.admin.properties.azure
- Örnek:
spring.kafka.admin.properties.azure
.credential.*
- Önek:
Spring Cloud Stream Kafka Binder ortak yapılandırması
- Önek:
spring.cloud.stream.kafka.binder.configuration.azure
- Örnek:
spring.cloud.stream.kafka.binder.configuration.azure
.credential.*
- Önek:
Spring Cloud Stream Kafka Binder tüketici yapılandırması
- Önek:
spring.cloud.stream.kafka.binder.consumer-properties.azure
- Örnek:
spring.cloud.stream.kafka.binder.consumer-properties.azure
.credential.*
- Önek:
Spring Cloud Stream Kafka Binder üretici yapılandırması
- Önek:
spring.cloud.stream.kafka.binder.producer-properties.azure
- Örnek:
spring.cloud.stream.kafka.binder.producer-properties.azure
.credential.*
- Önek:
Spring Cloud Stream Kafka Binder yönetici yapılandırması
- Ön ek: Desteklenmez, Spring Boot Kafka ortak veya yönetici yapılandırmasını kullanmalıdır.
Aşağıdaki tabloda Spring Boot Kafka ortak yapılandırma seçenekleri gösterilmektedir:
Adı | Açıklama |
---|---|
spring.kafka.properties.azure.credential.client-certificate-password | Sertifika dosyasının parolası. |
spring.kafka.properties.azure.credential.client-certificate-path | Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak PEM sertifika dosyasının yolu. |
spring.kafka.properties.azure.credential.client-id | Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak istemci kimliği. Bu eski bir özelliktir. |
spring.kafka.properties.azure.credential.client-secret | Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak istemci gizli dizisi. Bu eski bir özelliktir. |
spring.kafka.properties.azure.credential.managed-identity-enabled | Yönetilen kimliğin Azure ile kimlik doğrulaması yapmasının etkinleştirilip etkinleştirilmeyileceği. true ise ve client-id ayarlanırsa, kullanıcı tarafından atanan yönetilen kimlik istemci kimliği olarak istemci kimliğini kullanır. Varsayılan değer yanlış değeridir. |
spring.kafka.properties.azure.credential.password | Azure ile kullanıcı adı/parola kimlik doğrulaması gerçekleştirirken kullanılacak parola. |
spring.kafka.properties.azure.credential.username | Azure ile kullanıcı adı/parola kimlik doğrulaması gerçekleştirirken kullanılacak kullanıcı adı. |
spring.kafka.properties.azure.profile.environment.active-directory-endpoint | Bağlanacak Microsoft Entra uç noktası. |
spring.kafka.properties.azure.profile.tenant-id | Azure kaynakları için kiracı kimliği. için tenant-id izin verilen değerler şunlardır: common , organizations , consumers veya kiracı kimliği. |
Dekont
Farklı düzeylerdeki yapılandırma seçenekleri aşağıdaki kuralları uygular. Daha belirli yapılandırma seçeneklerinin önceliği yaygın olanlardan daha yüksektir. Örneğin:
- Spring Kafka ortak yapılandırma seçenekleri genel seçeneklerin yerini alır.
- Spring Kafka tüketici yapılandırma seçenekleri, ortak seçeneklerin yerini alır.
- Spring Kafka üretici yapılandırma seçenekleri, ortak seçeneklerin yerini alır.
- Spring Kafka yönetici yapılandırma seçenekleri, ortak seçeneklerin yerini alır.
- Spring Cloud Stream Kafka Binder seçenekleri de yukarıdaki gibidir.
Düz bağlantı dizesi kimlik doğrulaması ile Kafka desteği kullanılırken yapılandırılabilir özellikler
Aşağıdaki tabloda Kafka için Spring Boot Event Hubs yaygın yapılandırma seçenekleri gösterilmektedir:
Özellik | Açıklama |
---|---|
spring.cloud.azure.eventhubs.kafka.enabled | Azure Event Hubs Kafka desteğinin etkinleştirilip etkinleştirilmeyileceği. Varsayılan değer true değeridir. |
spring.cloud.azure.eventhubs.connection-string | Azure Event Hubs bağlantı dizesi. bağlantı dizesi doğrudan sağlamak istediğinizde bu değeri belirtin. |
spring.cloud.azure.eventhubs.namespace | Azure Event Hubs ad alanı. Azure Resource Manager aracılığıyla bağlantı bilgilerini almak istediğinizde bu değeri belirtin. |
spring.cloud.azure.eventhubs.resource.resource-group | Azure Event Hubs ad alanının kaynak grubu. Azure Resource Manager aracılığıyla bağlantı bilgilerini almak istediğinizde bu değeri belirtin. |
spring.cloud.azure.profile.subscription-id | Abonelik kimliği. Azure Resource Manager aracılığıyla bağlantı bilgilerini almak istediğinizde bu değeri belirtin. |
Bağımlılık kurulumu
Projenize aşağıdaki bağımlılığı ekleyin. Bu, projenizdeki bağımlılığı geçişli olarak otomatik olarak içerir spring-boot-starter
.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Dekont
Ürün reçetesini spring-cloud-azure-dependencies
yukarıdaki bağımlılıkla birlikte eklemeyi unutmayın. Ayrıntılar için Spring Cloud Azure geliştirici kılavuzunun Başlarken bölümüne bakın.
Temel kullanım
Aşağıdaki bölümlerde klasik Spring Boot uygulaması kullanım senaryoları gösterilmektedir.
OAuth kimlik doğrulamasını kullanma
Kafka için Spring Cloud Azure tarafından sağlanan OAuth kimlik doğrulamasını kullandığınızda, yukarıdaki yapılandırmaları kullanarak belirli kimlik bilgilerini yapılandırabilirsiniz. Alternatif olarak, kimlik bilgileri hakkında hiçbir şey yapılandırmamayı seçebilirsiniz. Bu durumda Spring Cloud Azure, kimlik bilgilerini ortamdan yükler. Bu bölümde, Azure CLI ortamından veya Azure Spring Apps barındırma ortamından kimlik bilgilerini yükleyen kullanımlar açıklanmaktadır.
Dekont
Bir Azure kaynağına erişim için Microsoft Entra Id ile kimlik doğrulaması yapmak ve yetkilendirmek için bir güvenlik sorumlusu kullanmayı seçerseniz, güvenlik sorumlusuna Azure kaynağına erişmek için yeterli iznin verildiğinden emin olmak için Microsoft Entra Id ile erişimi yetkilendirme bölümüne bakın.
Aşağıdaki bölümde, OAuth kimlik doğrulaması ile farklı Spring ekosistem kitaplıklarının kullanıldığı senaryolar açıklanmaktadır.
Spring Kafka uygulama desteği
Bu bölümde Spring Kafka veya Spring Integration Kafka kitaplığını kullanan Spring Boot uygulaması kullanım senaryosu açıklanmaktadır.
Bağımlılık kurulumu
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
<!-- Using Spring Kafka library only-->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>{version}</version><!--Need to be set, for example:2.8.6-->
</dependency>
<!-- Using Spring Integration library only -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-kafka</artifactId>
<version>{version}</version><!--Need to be set, for example:5.5.12-->
</dependency>
Yapılandırma güncelleştirmesi
OAuth kimlik doğrulamasını kullanmak için, aşağıdaki örnekte gösterildiği gibi Event Hubs uç noktasını belirtmeniz gerekir:
spring.kafka.bootstrap-servers=<NAMESPACENAME>.servicebus.windows.net:9093
Spring Cloud Stream bağlayıcısı Kafka uygulama desteği
Bu bölümde Spring Cloud Stream bağlayıcı kafka kitaplığını kullanan Spring Boot uygulamaları için kullanım senaryosu açıklanmaktadır.
Bağımlılık kurulumu
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-kafka</artifactId>
<version>{version}</version><!--Need to be set, for example:3.2.3-->
</dependency>
Yapılandırma
OAuth kimlik doğrulamasını kullanmak için aşağıdaki örnekte gösterildiği gibi Event Hubs uç noktasını belirtmeniz gerekir:
spring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093
Dekont
sürümünü 4.3.0
kullanıyorsanız özelliğini, varsayılan olarak tek bir Kafka bağlayıcı uygulamasında olan kafka-binder-name
kafka
OAuth kimlik doğrulaması iş akışının tamamını etkinleştirecek şekilde ayarlamayı spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration
unutmayın. Yapılandırma AzureKafkaSpringCloudStreamConfiguration
, içinde Azure Kimliğini etkinleştirmek için KafkaBinderConfigurationProperties
kullanılan KafkaOAuth2AuthenticateCallbackHandler
OAuth güvenlik parametrelerini belirtir.
sürümünden sonraki 4.4.0
sürüm için bu özellik her Kafka bağlayıcı ortamı için otomatik olarak eklenir, bu nedenle el ile eklemenize gerek yoktur.
Örnekler
GitHub'daki azure-spring-boot-samples deposuna bakın.
bağlantı dizesi kimlik doğrulamayı kullanma
bağlantı dizesi kimlik doğrulamasını doğrudan kullanabilir veya bağlantı dizesi almak için Azure Resource Manager'ı kullanabilirsiniz.
Dekont
4.3.0 sürümünden bu yana bağlantı dizesi kimlik doğrulaması, OAuth kimlik doğrulamaları için kullanım dışı bırakılmıştır.
4.5.0 sürümünden bu yana, Spring Cloud Stream çerçevesiyle bağlantı dizesi kimlik doğrulaması kullanılırken, bağlantı dizesi etkili olabileceğinden emin olmak için aşağıdaki özellik gereklidir. Bu özellik, Kafka bağlayıcı adınız için özelleştirilmiş bir yapılandırma olmadığında değerinin <kafka-binder-name>
olması gereken yerdedirkafka
.
spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration
Bağımlılık kurulumu
Apache Kafka uygulamanızı Kafka için Azure Event Hubs kullanacak şekilde geçirmek istiyorsanız aşağıdaki bağımlılıkları ekleyin.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Azure Resource Manager kullanarak bağlantı dizesi almak istiyorsanız aşağıdaki bağımlılığı ekleyin:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-resourcemanager</artifactId>
</dependency>
Yapılandırma
Event Hubs bağlantı dizesi doğrudan kullanma
Kafka için Event Hubs'a bağlanmanın en basit yolu bağlantı dizesi. Yalnızca aşağıdaki özelliği ekleyin.
spring.cloud.azure.eventhubs.connection-string=${AZURE_EVENTHUBS_CONNECTION_STRING}
Bağlantı dizesi almak için Azure Resource Manager'ı kullanma
Uygulamanızda bağlantı dizesi yapılandırmak istemiyorsanız, bağlantı dizesi almak için Azure Resource Manager'ı kullanabilirsiniz. Azure Resource Manager ile kimlik doğrulaması yapmak için Azure CLI'da veya Visual Studio Code veya Intellij IDEA gibi başka bir yerel geliştirme aracında depolanan kimlik bilgilerini de kullanabilirsiniz. Alternatif olarak, uygulamanız Azure Bulut'a dağıtıldıysa Yönetilen Kimlik'i kullanabilirsiniz. Sorumlunun kaynak meta verilerini okumak için yeterli izne sahip olduğundan emin olun.
Dekont
Azure kaynağına erişim için Microsoft Entra Id ile kimlik doğrulaması yapmak ve yetkilendirmek için bir güvenlik sorumlusu kullanmayı seçerseniz, güvenlik sorumlusuna Azure kaynağına erişmek için yeterli iznin verildiğinden emin olmak için Microsoft Entra Id ile erişimi yetkilendirme bölümüne bakın.
Azure Resource Manager'ı kullanarak bağlantı dizesi almak için aşağıdaki özelliği eklemeniz gerekir.
spring:
cloud:
azure:
profile:
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${AZURE_EVENTHUBS_NAMESPACE}
resource:
resource-group: ${AZURE_EVENTHUBS_RESOURCE_GROUP}
Örnekler
GitHub'daki azure-spring-boot-samples deposuna bakın.