Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu se dozvíte, jak nakonfigurovat aplikaci Spring Cloud Stream Binder založenou na Java tak, aby používala Azure Event Hubs pro Kafka pro odesílání a přijímání zpráv pomocí Azure Event Hubs. Další informace najdete v tématu Použití Azure Event Hubs z aplikací Apache Kafka
V tomto kurzu budeme zahrnovat dvě metody ověřování: ověřování Microsoft Entra a ověřování Sdílené přístupové podpisy (SAS), . Na kartě Passwordless se zobrazuje ověřování Microsoft Entra a na kartě Řetězec připojení se zobrazuje ověřování SAS.
Ověřování Microsoft Entra je mechanismus pro připojení k Kafka v Azure Event Hubs pomocí identit definovaných v Microsoft Entra ID. S ověřováním Microsoft Entra můžete spravovat identity uživatelů databáze a další služby Microsoft v centrálním umístění, což zjednodušuje správu oprávnění.
Ověřování SAS používá spojovací řetězec vašeho oboru názvů Azure Event Hubs pro delegovaný přístup ke službě Event Hubs při použití Apache Kafka. Pokud se rozhodnete používat sdílené přístupové podpisy jako přihlašovací údaje, musíte spravovat připojovací řetězec sami.
Požadavky
Předplatné Azure – vytvořte si ho zdarma.
Java Development Kit (JDK) verze 8 nebo vyšší.
Apache Maven verze 3.2 nebo vyšší
cURL nebo podobný nástroj HTTP pro testování funkčnosti.
Azure Cloud Shell nebo Azure CLI 2.37.0 nebo vyšší.
Centrum událostí Azure. Pokud žádné nemáte, vytvořte centrum událostí pomocí portálu Azure.
Aplikace Spring Boot. Pokud ho nemáte, vytvořte projekt Maven pomocí aplikace Spring Initializr. Nezapomeňte vybrat Maven Project a v části Dependencies, přidejte Spring Web, Spring pro Apache Kafka a Cloud Stream závislostí a pak vyberte Java verze 8 nebo vyšší.
Důležité
K dokončení kroků v tomto kurzu se vyžaduje Spring Boot verze 2.5 nebo vyšší.
Příprava přihlašovacích údajů
Azure Event Hubs podporuje použití Microsoft Entra ID k autorizaci požadavků na prostředky služby Event Hubs. S Microsoft Entra ID můžete pomocí řízení přístupu na základě rolí (Azure RBAC) udělit oprávnění k objektu zabezpečení, což může být uživatel nebo služební účet aplikace.
Pokud chcete tuto ukázku spustit místně s ověřováním Microsoft Entra, ujistěte se, že se váš uživatelský účet ověřil přes Azure Toolkit for IntelliJ, Visual Studio Code Azure Account plugin nebo Azure CLI. Také se ujistěte, že účet má dostatečná oprávnění.
Poznámka:
Pokud používáte připojení bez hesla, musíte účtu udělit přístup k prostředkům. V Azure Event Hubs přiřaďte roli Azure Event Hubs Data Receiver a Azure Event Hubs Data Sender k účtu Microsoft Entra, který právě používáte. Další informace o udělení přístupových rolí najdete v tématu Přiřazení rolí Azure pomocí portálu Azure a Autorizace přístupu k prostředkům služby Event Hubs pomocí Microsoft Entra ID.
Odesílání a příjem zpráv z Azure Event Hubs
Pomocí centra událostí Azure můžete odesílat a přijímat zprávy pomocí Azure Spring Cloudu.
Pokud chcete nainstalovat modul Spring Cloud Azure Starter, přidejte do souboru
Spring Cloud Azure BOM:
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.3.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Poznámka:
Pokud používáte Spring Boot 4.0.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na7.3.0.Pokud používáte Spring Boot 3.5.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na6.4.0hodnotu.Pokud používáte Spring Boot 3.1.x-3.5.x, nezapomeňte nastavit verzi na
spring-cloud-azure-dependencies.Pokud používáte Spring Boot 2.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na4.20.0.Tato faktura materiálu (BOM) by měla být nakonfigurována v
<dependencyManagement>části vašeho pom.xml souboru. Tím zajistíte, že všechny závislosti Spring Cloud Azure budou používat stejnou verzi.Další informace o verzi použité pro tento kusovník najdete v tématu Kterou verzi Spring Cloud Azure bych měl použít.
Úvodní artefakt Spring Cloudu Azure:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>
Vytvoření kódu aplikace
Pomocí následujícího postupu nakonfigurujte aplikaci tak, aby vytvářela a využívala zprávy pomocí Azure Event Hubs.
Nakonfigurujte přihlašovací údaje centra událostí přidáním následujících vlastností do souboru application.properties .
spring.cloud.stream.kafka.binder.brokers=${AZ_EVENTHUBS_NAMESPACE_NAME}.servicebus.windows.net:9093 spring.cloud.function.definition=consume;supply spring.cloud.stream.bindings.consume-in-0.destination=${AZ_EVENTHUB_NAME} spring.cloud.stream.bindings.consume-in-0.group=$Default spring.cloud.stream.bindings.supply-out-0.destination=${AZ_EVENTHUB_NAME}Návod
Pokud používáte verzi
spring-cloud-azure-dependencies:4.3.0, měli byste přidat vlastnostspring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sourcess hodnotoucom.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration.Protože se tato vlastnost přidá automaticky, nemusíte ji přidávat ručně.
Následující tabulka popisuje pole v konfiguraci:
Pole Popis spring.cloud.stream.kafka.binder.brokersUrčuje koncový bod Azure Event Hubs. spring.cloud.stream.bindings.consume-in-0.destinationUrčuje vstupní cílové centrum událostí, které je pro účely tohoto kurzu centrem, které jste vytvořili dříve. spring.cloud.stream.bindings.consume-in-0.groupUrčuje skupinu příjemců z Azure Event Hubs, kterou můžete nastavit na $Default, aby bylo možné použít základní skupinu příjemců vytvořenou při vytváření instance Azure Event Hubs.spring.cloud.stream.bindings.supply-out-0.destinationUrčuje výstupní cílové centrum událostí, které je pro účely tohoto kurzu stejné jako vstupní cíl. Poznámka:
Pokud povolíte automatické vytváření témat, nezapomeňte přidat položku konfigurace
spring.cloud.stream.kafka.binder.replicationFactors hodnotou nastavenou alespoň na1. Další informace najdete v referenční příručce Spring Cloud Stream Kafka Binder.Upravte soubor spouštěcí třídy, aby se zobrazil následující obsah.
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; import java.util.function.Consumer; import java.util.function.Supplier; @SpringBootApplication public class EventHubKafkaBinderApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(EventHubKafkaBinderApplication.class); private static final Sinks.Many<Message<String>> many = Sinks.many().unicast().onBackpressureBuffer(); public static void main(String[] args) { SpringApplication.run(EventHubKafkaBinderApplication.class, args); } @Bean public Supplier<Flux<Message<String>>> supply() { return ()->many.asFlux() .doOnNext(m->LOGGER.info("Manually sending message {}", m)) .doOnError(t->LOGGER.error("Error encountered", t)); } @Bean public Consumer<Message<String>> consume() { return message->LOGGER.info("New message received: '{}'", message.getPayload()); } @Override public void run(String... args) { many.emitNext(new GenericMessage<>("Hello World"), Sinks.EmitFailureHandler.FAIL_FAST); } }Návod
V tomto kurzu nejsou v konfiguracích ani kódu žádné ověřovací operace. Připojení ke službám Azure ale vyžaduje ověření. K dokončení ověřování je potřeba použít Azure Identity. Spring Cloud Azure používá
DefaultAzureCredential, které knihovna identit Azure poskytuje, aby vám pomohla získat přihlašovací údaje bez jakýchkoli změn kódu.DefaultAzureCredentialpodporuje více metod ověřování a určuje, kterou metodu použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (například v místních a produkčních prostředích) bez implementace kódu specifického pro prostředí. Další informace naleznete v tématu DefaultAzureCredential.K dokončení ověřování v místních vývojových prostředích můžete použít Azure CLI, Visual Studio Code, PowerShell nebo jiné metody. Další informace najdete v tématu ověřování Azure pro vývojová prostředí Java. K dokončení ověřování v Azure hostitelských prostředích doporučujeme použít spravovanou identitu přiřazenou uživatelem. Další informace najdete v tématu Co jsou spravované identity pro prostředky Azure?
Spusťte aplikaci. Zprávy jako v následujícím příkladu se publikuje v protokolu vaší aplikace:
Kafka version: 3.0.1 Kafka commitId: 62abe01bee039651 Kafka startTimeMs: 1622616433956 New message received: 'Hello World'
Nasazení do Azure Spring Apps
Teď, když máte aplikaci Spring Boot spuštěnou místně, je čas ji přesunout do produkčního prostředí. Azure Spring Apps usnadňuje nasazování aplikací Spring Boot do Azure bez jakýchkoli změn kódu. Služba spravuje infrastrukturu aplikací Spring, aby se vývojáři mohli soustředit na svůj kód. Azure Spring Apps poskytuje správu životního cyklu pomocí komplexního monitorování a diagnostiky, správy konfigurace, zjišťování služeb, integrace CI/CD, modrých zelených nasazení a dalších. Pokud chcete aplikaci nasadit do Azure Spring Apps, viz Nasazení první aplikace na Azure Spring Apps.