Použití Spring Kafka se službou Azure Event Hubs pro rozhraní Kafka API
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ů
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 Azure Event Hubs Data Receiver
tuto roli 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:
Kusovník materiálů (BOM) Spring Cloud v Azure:
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.18.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Poznámka:
Pokud používáte Spring Boot 2.x, nezapomeňte nastavit
spring-cloud-azure-dependencies
verzi na4.19.0
. Tato faktura materiálu (BOM) by měla být nakonfigurována v<dependencyManagement>
části vašeho pom.xml souboru. Tím se zajistí, že všechny závislosti Azure Spring Cloudu budou používat stejnou verzi. Další informace o verzi použité pro tuto kusovníku 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.
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}
Tip
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.sources
s hodnotoucom.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration
.Vzhledem k tomu
4.4.0
, že se tato vlastnost přidá automaticky, takže ji nemusíte přidávat ručně.Následující tabulka popisuje pole v konfiguraci:
Pole Popis spring.cloud.stream.kafka.binder.brokers
Určuje koncový bod služby Azure Event Hubs. spring.cloud.stream.bindings.consume-in-0.destination
Urč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.group
Urč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.destination
Urč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é vytvoření tématu, nezapomeňte přidat položku
spring.cloud.stream.kafka.binder.replicationFactor
konfigurace s hodnotou nastavenou alespoň na 1. 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); } }
Tip
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.DefaultAzureCredential
podporuje 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.