Použití Azure Event Gridu na Springu

V tomto článku se dozvíte, jak pomocí Azure Event Gridu odeslat událost do tématu a pomocí fronty služby Service Bus jako obslužné rutiny události přijímat v aplikaci Spring Boot.

Služba Azure Event Grid je vysoce škálovatelná plně spravovaná služba distribuce zpráv Pub Sub, která nabízí flexibilní vzory spotřeby zpráv pomocí protokolů MQTT a HTTP.

Požadavky

Přihlášení k odběru vlastního tématu

Pomocí následujících kroků vytvořte odběr událostí, který službě Event Grid řekne, aby odesílal události do fronty služby Service Bus:

  1. Na webu Azure Portal přejděte k instanci tématu Event Gridu.
  2. Na panelu nástrojů vyberte Odběry událostí .
  3. Na stránce Vytvořit odběr události zadejte hodnotu názvu odběru události.
  4. Jako typ koncového bodu vyberte frontu služby Service Bus.
  5. Vyberte koncový bod a pak vyberte instanci fronty služby Service Bus, kterou jste vytvořili dříve.

Odeslání události službou Azure Event Grid a přijetí frontou služby Azure Service Bus

Pomocí prostředku Azure Event Gridu můžete odeslat událost pomocí Spring Cloud Azure Event Gridu. Pomocí prostředku fronty Služby Azure Service Bus jako obslužné rutiny události můžete událost přijmout pomocí Spring Cloud Azure Stream Binderu pro Service Bus.

Pokud chcete nainstalovat úvodní modul Spring Cloud Azure Event Gridu a modul Spring Cloud Azure Stream Binder Service Bus, 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.11.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 na 4.17.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.

  • Úvodní artefakt Služby Azure Event Grid pro Spring Cloud:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-eventgrid</artifactId>
    </dependency>
    
  • Artefakt Spring Cloud Azure Stream Binder Service Bus:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId>
    </dependency>
    

Vytvoření kódu aplikace

Pomocí následujících kroků nakonfigurujte aplikaci tak, aby odesílala událost pomocí Event Gridu a přijímala ji pomocí fronty služby Service Bus.

  1. V konfiguračním souboru application.yaml nakonfigurujte přihlašovací údaje služby Azure Event Grid a Service Bus, jak je znázorněno v následujícím příkladu:

    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. Upravte soubor spouštěcí třídy, aby se zobrazil následující obsah. Tento kód generuje dokončování.

    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. Spusťte aplikaci. Po spuštění aplikace vytvoří protokoly podobné následujícímu příkladu:

    New event published: '"FirstName: John, LastName: James"'
    ...
    New event received: '"FirstName: John, LastName: James"'
    

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.

Další kroky

Pokud se chcete dozvědět více o architektuře Spring a Azure, přejděte do centra dokumentace Spring v Azure.