Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku przedstawiono sposób konfigurowania opartego na języku Java powiązania strumienia Spring Cloud w celu używania usługi Azure Event Hubs dla platformy Kafka do wysyłania i odbierania komunikatów za pomocą usługi Azure Event Hubs. Aby uzyskać więcej informacji, zobacz Use Azure Event Hubs from Apache Kafka applications (Korzystanie z usługi Azure Event Hubs z aplikacji platformy Apache Kafka)
W tym samouczku uwzględnimy dwie metody uwierzytelniania: uwierzytelnianie Microsoft Entra oraz uwierzytelnianie za pomocą sygnatur dostępu współdzielonego (SAS). Karta Bezhasłowy pokazuje uwierzytelnianie Microsoft Entra, a karta Ciąg połączenia pokazuje uwierzytelnianie SAS.
Uwierzytelnianie Entra firmy Microsoft to mechanizm łączenia się z usługą Azure Event Hubs dla platformy Kafka przy użyciu tożsamości zdefiniowanych w identyfikatorze Entra firmy Microsoft. Dzięki uwierzytelnieniu firmy Microsoft Entra można zarządzać tożsamościami użytkowników bazy danych i innymi usługi firmy Microsoft w centralnej lokalizacji, co upraszcza zarządzanie uprawnieniami.
Uwierzytelnianie SAS używa ciągu połączenia przestrzeni nazw usługi Azure Event Hubs dla delegowanego dostępu do Event Hubs dla platformy Kafka. Jeśli zdecydujesz się używać sygnatur dostępu współdzielonego jako poświadczeń, musisz samodzielnie zarządzać parametry połączenia.
Wymagania wstępne
Subskrypcja platformy Azure — utwórz bezpłatnie.
Zestaw Java Development Kit (JDK) w wersji 8 lub nowszej.
Apache Maven, wersja 3.2 lub nowsza.
cURL lub podobne narzędzie HTTP do testowania funkcjonalności.
Usługa Azure Cloud Shell lub interfejs wiersza polecenia platformy Azure w wersji 2.37.0 lub nowszej.
Centrum zdarzeń platformy Azure. Jeśli go nie masz, utwórz centrum zdarzeń przy użyciu witryny Azure Portal.
Aplikacja Spring Boot. Jeśli go nie masz, utwórz projekt Maven za pomocą narzędzia Spring Initializr. Pamiętaj, aby wybrać Projekt Maven i w sekcji Zależności dodać zależności Spring Web, Spring for Apache Kafka i Cloud Stream, a następnie wybrać wersję Java 8 lub nowszą.
Ważne
Do wykonania kroków opisanych w tym samouczku wymagana jest wersja 2.5 lub nowsza Spring Boot.
Przygotowywanie poświadczeń
Ważne
Uwierzytelnianie parametrów połączenia nie jest już obsługiwane w usłudze Spring Cloud Azure 6.0.0 lub nowszej. Zamiast tego używaj połączeń bez hasła.
Usługa Azure Event Hubs obsługuje używanie identyfikatora Entra firmy Microsoft do autoryzowania żądań do zasobów usługi Event Hubs. Za pomocą identyfikatora Entra firmy Microsoft możesz użyć kontroli dostępu opartej na rolach (RBAC) platformy Azure , aby udzielić uprawnień jednostce zabezpieczeń, która może być użytkownikiem lub jednostką usługi aplikacji.
Jeśli chcesz uruchomić ten przykład lokalnie z uwierzytelnianiem firmy Microsoft Entra, upewnij się, że twoje konto użytkownika zostało uwierzytelnione za pośrednictwem zestawu narzędzi Azure Toolkit for IntelliJ, wtyczki konta platformy Azure programu Visual Studio Code lub interfejsu wiersza polecenia platformy Azure. Upewnij się również, że konto otrzymało wystarczające uprawnienia.
Uwaga
W przypadku korzystania z połączeń bezhasłowych należy udzielić swojemu kontu dostępu do zasobów. W usłudze Azure Event Hubs przypisz role Azure Event Hubs Data Receiver i Azure Event Hubs Data Sender do konta Microsoft Entra, którego aktualnie używasz. Aby uzyskać więcej informacji na temat udzielania ról dostępu, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal i Autoryzowanie dostępu do zasobów usługi Event Hubs przy użyciu identyfikatora Entra firmy Microsoft.
Wysyłanie i odbieranie komunikatów z usługi Azure Event Hubs
Za pomocą centrum zdarzeń platformy Azure można wysyłać i odbierać komunikaty przy użyciu platformy Spring Cloud Azure.
Aby zainstalować moduł Spring Cloud Azure Starter, dodaj następujące zależności do pliku pom.xml :
Projekt Spring Cloud Azure Bill of Materials (BOM):
<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>Uwaga
Jeśli używasz środowiska Spring Boot 3.0.x-3.4.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na5.23.0.Jeśli używasz środowiska Spring Boot 2.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na4.20.0.Tę strukturę materiałową (BOM) należy skonfigurować w sekcji
<dependencyManagement>pliku pom.xml. Gwarantuje to, że wszystkie zależności Spring Cloud Azure korzystają z tej samej wersji.Aby uzyskać więcej informacji na temat wersji używanej dla tego BOM, zobacz Którą wersję Spring Cloud Azure powinienem używać.
Artefakt Spring Cloud Azure Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>
Kodowanie aplikacji
Wykonaj poniższe kroki, aby skonfigurować aplikację do tworzenia i używania komunikatów przy użyciu usługi Azure Event Hubs.
Ważne
Uwierzytelnianie parametrów połączenia nie jest już obsługiwane w usłudze Spring Cloud Azure 6.0.0 lub nowszej. Zamiast tego używaj połączeń bez hasła.
Aby skonfigurować poświadczenia centrum zdarzeń, dodaj następujące właściwości do pliku 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}Napiwek
Jeśli używasz wersji
spring-cloud-azure-dependencies:4.3.0, dodaj właściwośćspring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sourcesz wartościącom.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration.Ponieważ
4.4.0ta właściwość zostanie dodana automatycznie, więc nie trzeba jej dodawać ręcznie.W poniższej tabeli opisano pola w konfiguracji:
Pole opis spring.cloud.stream.kafka.binder.brokersOkreśla punkt końcowy usługi Azure Event Hubs. spring.cloud.stream.bindings.consume-in-0.destinationOkreśla centrum zdarzeń, które jest używane jako źródło danych wejściowych. Dla tego samouczka jest to centrum utworzone wcześniej. spring.cloud.stream.bindings.consume-in-0.groupOkreśla grupę konsumencką z usługi Azure Event Hubs, która może być ustawiona na $Default, aby użyć podstawowej grupy konsumenckiej utworzonej podczas tworzenia wystąpienia usługi Azure Event Hubs.spring.cloud.stream.bindings.supply-out-0.destinationOkreśla wyjściowe docelowe centrum zdarzeń, które dla tego samouczka jest takie samo jak miejsce docelowe danych wejściowych. Uwaga
Jeśli włączysz automatyczne tworzenie tematu, pamiętaj, aby dodać element konfiguracji
spring.cloud.stream.kafka.binder.replicationFactor, z wartością ustawioną na co najmniej1. Aby uzyskać więcej informacji, zobacz Spring Cloud Stream Kafka Binder Reference Guide (Przewodnik referencyjny dotyczący narzędzia binder platformy Kafka w usłudze Spring Cloud Stream).Edytuj plik klasy uruchamiania, aby wyświetlić następującą zawartość.
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); } }Napiwek
W tym poradniku nie ma żadnych operacji uwierzytelniania w konfiguracjach czy kodzie. Jednak nawiązywanie połączenia z usługami platformy Azure wymaga uwierzytelniania. Aby ukończyć uwierzytelnianie, musisz użyć usługi Azure Identity. Platforma Spring Cloud na platformie Azure używa
DefaultAzureCredentialbiblioteki tożsamości platformy Azure, która ułatwia uzyskiwanie poświadczeń bez żadnych zmian w kodzie.DefaultAzureCredentialobsługuje wiele metod uwierzytelniania i określa, która metoda ma być używana w czasie wykonywania. Takie podejście umożliwia aplikacji używanie różnych metod uwierzytelniania w różnych środowiskach (takich jak środowiska lokalne i produkcyjne) bez implementowania kodu specyficznego dla środowiska. Aby uzyskać więcej informacji, zobacz DefaultAzureCredential.Aby ukończyć uwierzytelnianie w lokalnych środowiskach deweloperskich, możesz użyć interfejsu wiersza polecenia platformy Azure, programu Visual Studio Code, programu PowerShell lub innych metod. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie platformy Azure w środowiskach deweloperskich Java. Aby ukończyć uwierzytelnianie w środowiskach hostingu platformy Azure, zalecamy użycie tożsamości zarządzanej przypisanej przez użytkownika. Aby uzyskać więcej informacji, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure?
Uruchom aplikację. Komunikaty podobne do poniższego przykładu zostaną opublikowane w dzienniku aplikacji:
Kafka version: 3.0.1 Kafka commitId: 62abe01bee039651 Kafka startTimeMs: 1622616433956 New message received: 'Hello World'
Wdrażanie do usługi Azure Spring Apps
Teraz, gdy aplikacja Spring Boot działa lokalnie, nadszedł czas, aby przenieść ją do środowiska produkcyjnego. Usługa Azure Spring Apps ułatwia wdrażanie aplikacji Spring Boot na platformie Azure bez żadnych zmian w kodzie. Usługa zarządza infrastrukturą aplikacji Spring, aby deweloperzy mogli skupić się na swoim kodzie. Usługa Azure Spring Apps zapewnia zarządzanie cyklem życia dzięki kompleksowemu monitorowaniu i diagnostyce, zarządzaniu konfiguracją, odnajdywaniu usług, integracji CI/CD, wdrożeniom blue-green i nie tylko. Aby wdrożyć aplikację w usłudze Azure Spring Apps, zobacz Wdrażanie pierwszej aplikacji w usłudze Azure Spring Apps.