Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
Den här artikeln gäller för:✅ version 4.19.0 ✅ version 5.20.1
Från version 4.3.0 stöder Spring Cloud Azure for Kafka olika typer av autentiseringsuppgifter för att autentisera och ansluta till Azure Event Hubs.
Den aktuella versionen av startern ska vara kompatibel med Apache Kafka-klienter 2.0.0 med Java 8 eller senare.
Följande autentiseringstyper stöds:
DefaultAzureCredential
autentiseringI det här avsnittet beskrivs det övergripande arbetsflödet för Spring Cloud Azure OAuth-autentisering.
Spring Cloud Azure skapar först en av följande typer av autentiseringsuppgifter beroende på konfigurationen för programautentisering:
ClientSecretCredential
ClientCertificateCredential
UsernamePasswordCredential
ManagedIdentityCredential
Om ingen av dessa typer av autentiseringsuppgifter hittas används autentiseringskedjan via DefaultAzureTokenCredential
för att hämta autentiseringsuppgifter från programegenskaper, miljövariabler, hanterad identitet eller IDE:er. Detaljerad information finns i Spring Cloud Azure-autentisering.
För autentiseringsläget för anslutningssträngar kan du använda autentisering med anslutningssträngen direkt eller använda Azure Resource Manager för att hämta anslutningssträngen. Mer information om användningen finns i avsnittet Grundläggande användning för autentisering av anslutningssträngar.
Anteckning
Eftersom version 4.3.0 är anslutningssträngsautentisering inaktuell till förmån för OAuth-autentiseringar.
Spring Cloud Azure for Kafka stöder följande två konfigurationsalternativ:
credential
och profile
med prefix för spring.cloud.azure
.common
, consumer
, producer
eller admin
omfång som har olika prefix.De globala egenskaperna exponeras via com.azure.spring.cloud.autoconfigure.context.AzureGlobalProperties
. De Kafka-specifika egenskaperna exponeras via org.springframework.boot.autoconfigure.kafka.KafkaProperties
(Spring Boot) och org.springframework.cloud.stream.binder.kafka.properties.KafkaBinderConfigurationProperties
(Spring Cloud Stream-pärm).
I följande lista visas alla konfigurationsalternativ som stöds.
Spring Cloud Azure för Event Hubs Kafka-egenskaper.
spring.cloud.azure.eventhubs.kafka.enabled
true
.Konfigurationsalternativ för global autentisering i Spring Cloud Azure
spring.cloud.azure
spring.cloud.azure.credential.*
, spring.cloud.azure.profile.*
En fullständig lista över globala konfigurationsalternativ finns i Globala konfigurationsegenskaper.
Vanliga konfigurationer för Spring Boot Kafka
spring.kafka.properties.azure
spring.kafka.properties.azure
.credential.*Konfigurationsalternativ för Spring Kafka-konsumenter
spring.kafka.consumer.properties.azure
spring.kafka.consumer.properties.azure
.credential.*Konfigurationsalternativ för Spring Kafka-producent
spring.kafka.producer.properties.azure
spring.kafka.producer.properties.azure
.credential.*Konfigurationsalternativ för Spring Kafka-administratör
spring.kafka.admin.properties.azure
spring.kafka.admin.properties.azure
.credential.*Gemensam konfiguration för Spring Cloud Stream Kafka Binder
spring.cloud.stream.kafka.binder.configuration.azure
spring.cloud.stream.kafka.binder.configuration.azure
.credential.*Spring Cloud Stream Kafka Binder-konsumentkonfiguration
spring.cloud.stream.kafka.binder.consumer-properties.azure
spring.cloud.stream.kafka.binder.consumer-properties.azure
.credential.*Spring Cloud Stream Kafka Binder-producentkonfiguration
spring.cloud.stream.kafka.binder.producer-properties.azure
spring.cloud.stream.kafka.binder.producer-properties.azure
.credential.*Spring Cloud Stream Kafka Binder-administratörskonfiguration
I följande tabell visas vanliga konfigurationsalternativ för Spring Boot Kafka:
Namn | Beskrivning |
---|---|
spring.kafka.properties.azure.credential.client-certificate-password | Lösenord för certifikatfilen. |
spring.kafka.properties.azure.credential.client-certificate-path | Sökväg till en PEM-certifikatfil som ska användas när du utför autentisering med tjänstens huvudnamn med Azure. |
spring.kafka.properties.azure.credential.client-id | Klient-ID som ska användas vid autentisering med tjänstens huvudnamn med Azure. Det här är en äldre egenskap. |
spring.kafka.properties.azure.credential.client-secret | Klienthemlighet som ska användas vid autentisering av tjänstens huvudnamn med Azure. Det här är en äldre egenskap. |
spring.kafka.properties.azure.credential.managed-identity-enabled | Om du vill aktivera hanterad identitet för att autentisera med Azure. Om true och client-id anges använder du klient-ID:t som användartilldelat klient-ID för hanterad identitet. Standardvärdet är false . |
spring.kafka.properties.azure.credential.password | Lösenord som ska användas när du utför autentisering med användarnamn/lösenord med Azure. |
spring.kafka.properties.azure.credential.username | Användarnamn som ska användas när du utför autentisering med användarnamn/lösenord med Azure. |
spring.kafka.properties.azure.profile.environment.active-directory-endpoint | Microsoft Entra-slutpunkten att ansluta till. |
spring.kafka.properties.azure.profile.tenant-id | Klientorganisations-ID för Azure-resurser. De värden som tillåts för tenant-id är: common , organizations , consumers eller klientorganisations-ID. |
Anteckning
Konfigurationsalternativen på olika nivåer tillämpar följande regler. De mer specifika konfigurationsalternativen har högre prioritet än de vanliga. Till exempel:
I följande tabell visas vanliga konfigurationsalternativ för Spring Boot Event Hubs för Kafka:
Egenskap | Beskrivning |
---|---|
spring.cloud.azure.eventhubs.kafka.enabled | Om du vill aktivera Azure Event Hubs Kafka-stöd. Standardvärdet är true . |
spring.cloud.azure.eventhubs.connection-string | Anslutningssträng för Azure Event Hubs. Ange det här värdet när du vill ange anslutningssträngen direkt. |
spring.cloud.azure.eventhubs.namespace | Azure Event Hubs-namnrymd. Ange det här värdet när du vill hämta anslutningsinformationen via Azure Resource Manager. |
spring.cloud.azure.eventhubs.resource.resource-group | Resursgruppen för Azure Event Hubs-namnområdet. Ange det här värdet när du vill hämta anslutningsinformationen via Azure Resource Manager. |
spring.cloud.azure.profile.subscription-id | Prenumerations-ID:t. Ange det här värdet när du vill hämta anslutningsinformationen via Azure Resource Manager. |
Lägg till följande beroende i projektet. Detta inkluderar automatiskt spring-boot-starter
beroende i projektet transitivt.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Anteckning
Kom ihåg att lägga till BOM-spring-cloud-azure-dependencies
tillsammans med ovanstående beroende. Mer information finns i avsnittet Komma igång i utvecklarguiden Spring Cloud Azure.
I följande avsnitt visas de klassiska Användningsscenarierna för Spring Boot-program.
När du använder OAuth-autentiseringen som tillhandahålls av Spring Cloud Azure for Kafka kan du konfigurera de specifika autentiseringsuppgifterna med hjälp av ovanstående konfigurationer. Du kan också välja att inte konfigurera något om autentiseringsuppgifter, i vilket fall Spring Cloud Azure läser in autentiseringsuppgifterna från miljön. I det här avsnittet beskrivs de användningar som läser in autentiseringsuppgifterna från Azure CLI-miljön eller Azure Spring Apps-värdmiljön.
Anteckning
Om du väljer att använda ett säkerhetsobjekt för att autentisera och auktorisera med Microsoft Entra-ID för åtkomst till en Azure-resurs läser du avsnittet Auktorisera åtkomst med Microsoft Entra-ID för att kontrollera att säkerhetsobjektet har beviljats tillräcklig behörighet för att få åtkomst till Azure-resursen.
I följande avsnitt beskrivs scenarier med olika Spring-ekosystembibliotek med OAuth-autentisering.
I det här avsnittet beskrivs användningsscenariot för Spring Boot-programmet med hjälp av Spring Kafka- eller Spring Integration Kafka-biblioteket.
<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>
Om du vill använda OAuth-autentiseringen anger du bara Event Hubs-slutpunkten, som du ser i följande exempel:
spring.kafka.bootstrap-servers=<NAMESPACENAME>.servicebus.windows.net:9093
I det här avsnittet beskrivs användningsscenariot för Spring Boot-program med hjälp av Spring Cloud Stream-binder Kafka-biblioteket.
<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>
Om du vill använda OAuth-autentiseringen anger du bara Event Hubs-slutpunkten enligt följande exempel:
spring.cloud.stream.kafka.binder.brokers=<NAMESPACENAME>.servicebus.windows.net:9093
Anteckning
Om du använder version 4.3.0
ska du inte glömma att ange egenskapen spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration
för att aktivera hela arbetsflödet för OAuth-autentisering, där kafka-binder-name
kafka
som standard i ett enda Kafka-binder-program. Konfigurationen AzureKafkaSpringCloudStreamConfiguration
anger OAuth-säkerhetsparametrarna för KafkaBinderConfigurationProperties
, som används i KafkaOAuth2AuthenticateCallbackHandler
för att aktivera Azure Identity.
För version efter 4.4.0
läggs den här egenskapen till automatiskt för varje Kafka-bindemedelsmiljö, så du behöver inte lägga till den manuellt.
Om du vill använda den hanterade identiteten behöver du aktivera den hanterade identiteten för din tjänst och tilldela rollerna Azure Event Hubs Data Receiver
och Azure Event Hubs Data Sender
. Mer information finns i Tilldela Azure-roller för åtkomsträttigheter.
Konfigurera följande egenskaper i din application.yml-fil:
spring:
cloud:
azure:
credential:
managed-identity-enabled: true
Viktigt
Om du använder användartilldelad hanterad identitet måste du också lägga till egenskapen spring.cloud.azure.credential.client-id
med ditt användartilldelade klient-ID för hanterad identitet.
Se azure-spring-boot-samples-lagringsplatsen på GitHub.
Du kan använda anslutningssträngsautentisering direkt eller använda Azure Resource Manager för att hämta anslutningssträngen.
Anteckning
Eftersom versionen av 5.0.0, när du använder anslutningssträngsautentisering med Spring Cloud Stream Framework, krävs fortfarande följande egenskap för att säkerställa att anslutningssträngen kan börja gälla, där värdet för <kafka-binder-name>
ska kafka
när det inte finns någon anpassad konfiguration för kafka-bindemedlets namn: spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources=com.azure.spring.cloud.autoconfigure.implementation.eventhubs.kafka.AzureEventHubsKafkaAutoConfiguration
Om versionen av spring-cloud-dependencies
som du använde är 2022.0.0
får du ett undantag från java.lang.IllegalStateException: kafka_context has not been refreshed yet
. Lös problemet genom att uppgradera till en högre version.
Lägg till följande beroenden om du vill migrera ditt Apache Kafka-program för att använda Azure Event Hubs för Kafka.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
Om du vill hämta anslutningssträngen med Hjälp av Azure Resource Manager lägger du till följande beroende:
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-resourcemanager</artifactId>
</dependency>
Det enklaste sättet att ansluta till Event Hubs för Kafka är med anslutningssträngen. Lägg bara till följande egenskap.
spring.cloud.azure.eventhubs.connection-string=${AZURE_EVENTHUBS_CONNECTION_STRING}
Om du inte vill konfigurera anslutningssträngen i ditt program kan du använda Azure Resource Manager för att hämta anslutningssträngen. Om du vill autentisera med Azure Resource Manager kan du också använda autentiseringsuppgifter som lagras i Azure CLI eller något annat lokalt utvecklingsverktyg som Visual Studio Code eller Intellij IDEA. Alternativt kan du använda Hanterad identitet om ditt program distribueras till Azure Cloud. Se bara till att huvudnamnet har tillräcklig behörighet för att läsa resursmetadata.
Anteckning
Om du väljer att använda ett säkerhetsobjekt för att autentisera och auktorisera med Microsoft Entra-ID för åtkomst till en Azure-resurs läser du avsnittet Auktorisera åtkomst med Microsoft Entra-ID för att se till att säkerhetsobjektet har beviljats tillräcklig behörighet för att få åtkomst till Azure-resursen.
Om du vill använda Azure Resource Manager för att hämta anslutningssträngen lägger du bara till följande egenskap.
spring:
cloud:
azure:
profile:
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${AZURE_EVENTHUBS_NAMESPACE}
resource:
resource-group: ${AZURE_EVENTHUBS_RESOURCE_GROUP}
Se azure-spring-boot-samples-lagringsplatsen på GitHub.
Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nu