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 Spring Cloud Stream Binder založený na Javě tak, aby používal službu Azure Event Hubs pro Kafka k odesílání a přijímání zpráv pomocí služby Azure Event Hubs. Další informace najdete v tématu Použití služby 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ého přístupového podpisu (SAS). Karta Bez hesla zobrazuje ověřování Microsoft Entra a karta Připojovací řetězec zobrazuje ověřování SAS.
Ověřování Microsoft Entra je mechanismus pro připojení ke službě Azure Event Hubs pro Kafka pomocí identit definovaných v Microsoft Entra ID. Pomocí ověřování 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á připojovací řetězec vašeho oboru názvů služby Azure Event Hubs pro delegovaný přístup ke službě Event Hubs pro 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 ho nemáte, vytvořte centrum událostí pomocí webu Azure Portal.
Aplikace Spring Boot. Pokud ho nemáte, vytvořte projekt Maven pomocí aplikace Spring Initializr. Nezapomeňte vybrat projekt Maven a v části Závislosti přidejte závislosti Spring Web, Spring for Apache Kafka a Cloud Stream a pak vyberte Javu 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ů
Důležité
Ověřování připojovacího řetězce se už v Azure Spring Cloud verze 6.0.0 nebo vyšší nepodporuje. Místo toho používejte připojení bez hesla.
Azure Event Hubs podporuje použití ID Microsoft Entra k autorizaci požadavků na prostředky služby Event Hubs. S ID Microsoft Entra můžete pomocí řízení přístupu na základě role v Azure (Azure RBAC) udělit oprávnění k objektu zabezpečení, což může být uživatel nebo instanční objekt 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 prostřednictvím sady Azure Toolkit for IntelliJ, modulu plug-in účtu Azure Pro Visual Studio Code 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. Ve službě Azure Event Hubs přiřaďte role Azure Event Hubs Data Receiver a Azure Event Hubs Data Sender účtu Microsoft Entra, který aktuálně používáte. Další informace o udělení přístupových rolí najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal a autorizace přístupu k prostředkům služby Event Hubs pomocí ID Microsoft Entra.
Odesílání a příjem zpráv ze služby Azure Event Hubs
S centrem událostí Azure můžete odesílat a přijímat zprávy pomocí Spring Cloudu Azure.
Pokud chcete nainstalovat modul Spring Cloud Azure Starter, přidejte do souboru pom.xml následující závislosti:
Referenční seznam (BOM) Spring Cloud Azure
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>6.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Poznámka:
Pokud používáte Spring Boot 3.0.x-3.4.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na5.23.0.Pokud používáte Spring Boot 2.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na4.20.0.Tento kusovník by měl být nakonfigurován v
<dependencyManagement>části vašeho souboru pom.xml. Tím se zajistí, že všechny závislosti Azure Spring Cloudu budou používat stejnou verzi.Další informace o používané verzi pro tento kusovník najdete v tématu Jakou verzi Spring Cloud Azure mám použít.
Artefakt Spring Cloud Azure Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>
Vytvoření kódu aplikace
Pomocí následujících kroků nakonfigurujte aplikaci tak, aby vytvářela a využívala zprávy pomocí služby Azure Event Hubs.
Důležité
Ověřování připojovacího řetězce se už ve Spring Cloud Azure verze 6.0.0 nebo vyšší nepodporuje. Místo toho používejte připojení bez hesla.
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 služby 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ů ze služby Azure Event Hubs, na kterou můžete nastavit $Default, aby se použila základní skupina příjemců vytvořená při vytváření instance služby 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 identitu Azure. Spring Cloud Azure používá
DefaultAzureCredential, kterou poskytuje knihovna identit Azure, která vám pomůže 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 ve vývojových prostředích Java. K dokončení ověřování v hostitelských prostředích Azure 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 nasadit aplikaci do Azure Spring Apps, přečtěte si téma Nasazení první aplikace do Azure Spring Apps.