Verwenden des Azure-Ereignisrasters im Frühling
In diesem Artikel wird gezeigt, wie Sie azure Event Grid verwenden, um ein Ereignis an ein Thema zu senden und Service Bus Queue als Ereignishandler für den Empfang in einer Spring Boot-Anwendung zu verwenden.
Der Azure Event Grid-Dienst ist ein hochgradig skalierbarer, vollständig verwalteter Pub Sub-Nachrichtenverteilungsdienst, der flexible Nachrichtennutzungsmuster mithilfe der MQTT- und HTTP-Protokolle bietet.
Voraussetzungen
Azure-Abonnement (kostenloses Abonnement erstellen)
Java Development Kit (JDK) Version 8 oder höher.
Apache Maven, Version 3.0 oder höher.
Eine Event Grid Topic-Instanz. Wenn Sie kein Thema haben, lesen Sie " Erstellen eines benutzerdefinierten Themas oder einer Domäne in Azure Event Grid".
Eine Dienstbuswarteschlangeninstanz. Wenn Sie keinen haben, lesen Sie "Erstellen einer Warteschlange in der Azure-Portal".
Ein Spring Boot-Anwendung. Wenn Sie keine Spring Boot-Anwendung besitzen, erstellen Sie mit Spring Initializr ein Maven-Projekt. Achten Sie darauf, Maven Project auszuwählen und Java, Version 8 oder höher, auszuwählen.
Abonnieren eines benutzerdefinierten Themas
Führen Sie die folgenden Schritte aus, um ein Ereignisabonnement zu erstellen, um das Ereignisraster anweisen, Ereignisse an die Servicebuswarteschlange zu senden:
- Navigieren Sie im Azure-Portal zu Ihrer Event Grid Topic-Instanz.
- Wählen Sie "Ereignisabonnements" auf der Symbolleiste aus.
- Geben Sie auf der Seite "Ereignisabonnement erstellen" einen Namenswert für das Ereignisabonnement ein.
- Wählen Sie für Endpunkttyp die Option Service Bus Queue aus.
- Wählen Sie einen Endpunkt aus, und wählen Sie dann die Zuvor erstellte Dienstbuswarteschlangeninstanz aus.
Senden eines Ereignisses nach Azure Event Grid und Empfangen von Azure Service Bus Queue
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 for Service Bus empfangen.
Um das Spring Cloud Event Grid Starter-Modul und das Spring Cloud Azure Stream Binder Service Bus-Modul zu installieren, fügen Sie die folgenden Abhängigkeiten zu Ihrer pom.xml Datei hinzu:
Die Spring Cloud Azure Bill of Materials (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.17.1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Hinweis
Wenn Sie Spring Boot 2.x verwenden, stellen Sie sicher, dass Sie die
spring-cloud-azure-dependencies
Version auf4.19.0
. Diese Stückliste (Bill of Material, BOM) sollte im<dependencyManagement>
Abschnitt Ihrer pom.xml Datei konfiguriert werden. Dadurch wird sichergestellt, dass alle Spring Cloud Azure-Abhängigkeiten dieselbe Version verwenden. Weitere Informationen zu der version, die für diese BOM verwendet wird, finden Sie unter Welche Version von Spring Cloud Azure sollte ich verwenden.Das Spring Cloud 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>
Codieren der Anwendung
Führen Sie die folgenden Schritte aus, um Ihre Anwendung so zu konfigurieren, dass ein Ereignis mithilfe des Ereignisrasters gesendet und mithilfe der Servicebuswarteschlange 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: false
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 in Azure ohne Codeänderungen. Der Dienst verwaltet die Infrastruktur von Spring-Anwendungen und ermöglicht es Entwicklern dadurch, sich auf ihren Code zu konzentrieren. Azure Spring Apps bietet eine Lebenszyklusverwaltung mit umfassender Überwachung und Diagnose, Konfigurationsverwaltung, Dienstermittlung, CI/CD-Integration, Blau/Grün-Bereitstellungen und mehr. Informationen zum Bereitstellen Ihrer Anwendung in Azure Spring Apps finden Sie unter Bereitstellen Ihrer ersten Anwendung in Azure Spring Apps.
Nächste Schritte
Weitere Informationen zu Spring und Azure finden Sie im Dokumentationscenter zu Spring in Azure.