Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie mithilfe von Azure Event Grid ein Ereignis an ein Thema senden und Service Bus Warteschlange als Event Handler für den Empfang in einer Spring Boot-Anwendung verwenden.
Der dienst Azure Event Grid ist ein hochgradig skalierbarer, vollständig verwalteter Pub Sub-Nachrichtenverteilungsdienst, der flexible Nachrichtennutzungsmuster mit den MQTT- und HTTP-Protokollen bietet.
Voraussetzungen
Ein Azure-Abonnement – create one for free.
Java Development Kit (JDK) Version 8 oder höher.
Apache Maven, Version 3.0 oder höher.
Eine Event Grid-Themainstanz Wenn Sie keines haben, sehen Sie sich Erstellen Sie ein benutzerdefiniertes Thema oder eine Domäne in Azure Event Grid an.
Eine Service Bus Warteschlangen-Instanz. Wenn Sie keine Warteschlange haben, lesen Sie Warteschlange im Azure-Portal erstellen.
Eine Spring Boot-Anwendung. Wenn Sie keines haben, erstellen Sie mit Spring Initializr ein Maven-Projekt. Wählen Sie Maven Project aus, und wählen Sie Java Version 8 oder höher aus.
Abonnieren eines benutzerdefinierten Themas
Führen Sie die folgenden Schritte aus, um ein Ereignisabonnement zu erstellen, damit das Event Grid Ereignisse an die Service Bus-Warteschlange sendet:
- Navigieren Sie im Azure-Portal zu Ihrer Event Grid Topic-Instanz.
- Wählen Sie in der Symbolleiste Ereignisabonnements aus.
- Geben Sie auf der Seite Ereignisabonnement erstellen einen Namen für das Ereignisabonnement ein.
- Wählen Sie für Endpoint TypeService Bus Queue aus.
- Wählen Sie Auswahl eines Endpunkts aus, und wählen Sie dann die zuvor erstellte Service Bus Warteschlangeninstanz aus.
Ein Ereignis über Azure Event Grid senden und über Azure Service Bus-Warteschlange empfangen
Mit einer Azure Event Grid-Ressource können Sie ein Ereignis mit Spring Cloud Azure Event Grid senden. Mit einer Azure Service Bus Queue-Ressource als Ereignishandler können Sie das Ereignis mit Spring Cloud Azure Stream Binder für Service Bus empfangen.
Um das Spring Cloud Azure Event Grid Startermodul und das Spring Cloud Azure Stream Binder Service Bus Modul zu installieren, fügen Sie die folgenden Abhängigkeiten zu Ihrer Datei pom.xml hinzu:
Die Spring Cloud Azure Stückliste (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.2.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Anmerkung
Wenn Sie Spring Boot 4.0.x verwenden, stellen Sie sicher, dass Sie die
spring-cloud-azure-dependenciesVersion auf7.2.0festlegen.Wenn Sie Spring Boot 3.5.x verwenden, stellen Sie sicher, dass Sie die
spring-cloud-azure-dependenciesVersion auf6.2.0festlegen.Wenn Sie Spring Boot 3.1.x-3.5.x verwenden, stellen Sie sicher, dass Sie die Version
spring-cloud-azure-dependenciesauf5.25.0setzen.Wenn Sie Spring Boot 2.x verwenden, stellen Sie sicher, dass Sie die
spring-cloud-azure-dependenciesVersion auf4.20.0festlegen.Diese Stückliste (Bill of Material, BOM) sollte im Abschnitt
<dependencyManagement>Ihrer pom.xml Datei konfiguriert werden. Dadurch wird sichergestellt, dass alle Spring Cloud-Azure Abhängigkeiten dieselbe Version verwenden.Nähere Informationen zur Version, die für diese BOM verwendet wird, können Sie unter dem Artikel Which Version of Spring Cloud Azure Should I Use finden.
Das Spring Cloud Azure Event Grid Starter-Artefakt:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>Das Spring Cloud Azure Stream Binder Service Bus Artefakt:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
Code der Anwendung
Führen Sie die folgenden Schritte aus, um Ihre Anwendung so zu konfigurieren, dass ein Ereignis mithilfe des Ereignisrasters gesendet und mithilfe Service Bus Warteschlange empfangen wird.
Konfigurieren Sie Azure Event Grid- und Service Bus Anmeldeinformationen in der Konfigurationsdatei application.yaml, wie im folgenden Beispiel gezeigt:
spring: cloud: azure: eventgrid: endpoint: ${AZURE_EVENTGRID_ENDPOINT} key: ${AZURE_EVENTGRID_KEY} servicebus: connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING} function: definition: consume stream: bindings: consume-in-0: destination: ${AZURE_SERVICEBUS_QUEUE_NAME} servicebus: bindings: consume-in-0: consumer: auto-complete: falseAnmerkung
Microsoft empfiehlt die Verwendung des sichersten Authentifizierungsflusses. Der in diesem Verfahren beschriebene Authentifizierungsfluss, z. B. für Datenbanken, Caches, Nachrichten oder KI-Dienste, erfordert ein sehr hohes Vertrauen in die Anwendung und trägt Risiken, die in anderen Flüssen nicht vorhanden sind. Verwenden Sie diesen Fluss nur, wenn sicherere Optionen wie verwaltete Identitäten für kennwortlose oder schlüssellose Verbindungen nicht geeignet sind. Bei Vorgängen des lokalen Computers bevorzugen Sie Benutzeridentitäten für kennwortlose oder schlüssellose Verbindungen.
Bearbeiten Sie die Startklassendatei, um den folgenden Inhalt anzuzeigen. Dieser Code generiert Fertigstellungen.
import com.azure.core.util.BinaryData; import com.azure.messaging.eventgrid.EventGridEvent; import com.azure.messaging.eventgrid.EventGridPublisherClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; 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 java.util.List; import java.util.function.Consumer; @SpringBootApplication public class EventGridSampleApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(EventGridSampleApplication.class); @Autowired EventGridPublisherClient<EventGridEvent> client; public static void main(String[] args) { SpringApplication.run(EventGridSampleApplication.class, args); } @Bean public Consumer<Message<String>> consume() { return message -> { List<EventGridEvent> eventData = EventGridEvent.fromString(message.getPayload()); eventData.forEach(event -> { LOGGER.info("New event received: '{}'", event.getData()); }); }; } @Override public void run(String... args) throws Exception { String str = "FirstName: John, LastName: James"; EventGridEvent event = new EventGridEvent("A user is created", "User.Created.Text", BinaryData.fromObject(str), "0.1"); client.sendEvent(event); LOGGER.info("New event published: '{}'", event.getData()); } }Starten Sie die Anwendung. Nach dem Start erzeugt die Anwendung Protokolle ähnlich dem folgenden Beispiel:
New event published: '"FirstName: John, LastName: James"' ... New event received: '"FirstName: John, LastName: James"'
Bereitstellen in Azure Spring Apps
Nachdem Sie nun die Spring Boot-Anwendung lokal ausgeführt haben, ist es an der Zeit, sie in die Produktion zu verschieben. Azure Spring Apps erleichtert die Bereitstellung von Spring Boot-Anwendungen auf Azure ohne Codeänderungen. Der Dienst verwaltet die Infrastruktur von Spring-Anwendungen, damit Entwickler sich auf ihren Code konzentrieren können. Azure Spring Apps bietet Lebenszyklusverwaltung mit umfassender Überwachung und Diagnose, Konfigurationsverwaltung, Dienstermittlung, CI/CD-Integration, blaugrünen Bereitstellungen und mehr. Informationen zum Bereitstellen der Anwendung für Azure Spring Apps finden Sie unter Veröffentlichen Sie Ihre erste Anwendung in Azure Spring Apps.
Nächste Schritte
Um mehr über Spring und Azure zu erfahren, fahren Sie mit dem Spring on Azure Dokumentationszentrum fort.