Teilen über


Verwenden des Azure-Ereignisrasters im Frühling

In diesem Artikel erfahren Sie, wie Sie mithilfe von Azure Event Grid ein Ereignis an ein Thema senden und die Service Bus-Warteschlange als Ereignishandler für den Empfang in einer Spring Boot-Anwendung 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

Abonnieren eines benutzerdefinierten Themas

Führen Sie die folgenden Schritte aus, um ein Ereignisabonnement zu erstellen und den Event Grid anzuweisen, Ereignisse an die Service Bus Queue zu senden:

  1. Navigieren Sie im Azure-Portal zu Ihrer Event Grid Topic-Instanz.
  2. Wählen Sie in der Symbolleiste Ereignisabonnements aus.
  3. Geben Sie auf der Seite Ereignisabonnement erstellen einen Namen für das Ereignisabonnement ein.
  4. Wählen Sie für Endpunkttyp die Service Bus-Warteschlange aus.
  5. Wählen Sie Endpunkt auswählen und dann die zuvor erstellte Service Bus-Warteschlangeninstanz aus.

Senden eines Ereignisses über Azure Event Grid und Empfangen über 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-Warteschlangenressource 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 Ihrer pom.xml Datei die folgenden Abhängigkeiten 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.19.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Anmerkung

    Wenn Sie Spring Boot 2.x verwenden, müssen Sie unbedingt die spring-cloud-azure-dependencies Version auf 4.19.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. Weitere Informationen zu der version, die für diese BOM verwendet wird, finden Sie unter Welche Version von Spring Cloud Azure sollte ichverwenden.

  • 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 über Event Grid gesendet und über die Service Bus Queue empfangen wird.

  1. 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
    
  2. 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());
        }
    }
    
    
  3. 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, damit Entwickler sich auf ihren Code konzentrieren können. 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

Um mehr über Spring und Azure zu erfahren, fahren Sie mit dem Spring on Azure-Dokumentationscenter fort.