Udostępnij za pośrednictwem


Korzystanie z usługi Azure Event Grid na platformie Spring

W tym artykule pokazano, jak za pomocą usługi Azure Event Grid wysyłać zdarzenie do tematu i używać kolejki usługi Service Bus jako procedury obsługi zdarzeń do odbierania w aplikacji Spring Boot.

Usługa Azure Event Grid to wysoce skalowalna, w pełni zarządzana usługa dystrybucji komunikatów podrzędnych pubu, która oferuje elastyczne wzorce zużycia komunikatów przy użyciu protokołów MQTT i HTTP.

Wymagania wstępne

Subskrybowanie do tematu niestandardowego

Wykonaj następujące kroki, aby utworzyć subskrypcję zdarzeń, aby poinformować usługę Event Grid o wysyłaniu zdarzeń do kolejki usługi Service Bus:

  1. W witrynie Azure Portal przejdź do wystąpienia tematu usługi Event Grid.
  2. Wybierz pozycję Subskrypcje zdarzeń na pasku narzędzi.
  3. Na stronie Tworzenie subskrypcji zdarzeń wprowadź wartość nazwy subskrypcji zdarzeń.
  4. W polu Typ punktu końcowego wybierz pozycję Kolejka usługi Service Bus.
  5. Wybierz pozycję Wybierz punkt końcowy , a następnie wybierz utworzone wcześniej wystąpienie kolejki usługi Service Bus.

Wysyłanie zdarzenia przez usługę Azure Event Grid i odbieranie ich przez kolejkę usługi Azure Service Bus

Za pomocą zasobu usługi Azure Event Grid możesz wysłać zdarzenie przy użyciu usługi Spring Cloud Azure Event Grid. Za pomocą zasobu kolejki usługi Azure Service Bus jako procedury obsługi zdarzeń można odbierać zdarzenie przy użyciu narzędzia Spring Cloud Azure Stream Binder for Service Bus.

Aby zainstalować moduł startowy spring Cloud Azure Event Grid i moduł Spring Cloud Azure Stream Binder Service Bus, 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>5.19.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Uwaga

    Jeśli używasz środowiska Spring Boot 2.x, pamiętaj, aby ustawić spring-cloud-azure-dependencies wersję na 4.19.0. Ten rachunek materiału (BOM) należy skonfigurować w <dependencyManagement> sekcji pliku pom.xml . Gwarantuje to, że wszystkie zależności platformy Azure platformy Spring Cloud korzystają z tej samej wersji. Aby uzyskać więcej informacji na temat wersji używanej dla tego modelu BOM, zobacz Która wersja platformy Spring Cloud platformy Azure powinna być używana.

  • Artefakt startowy spring Cloud Azure Event Grid:

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

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

Kodowanie aplikacji

Wykonaj poniższe kroki, aby skonfigurować aplikację do wysyłania zdarzenia przy użyciu usługi Event Grid i odbierania przy użyciu kolejki usługi Service Bus.

  1. Skonfiguruj poświadczenia usługi Azure Event Grid i Service Bus w pliku konfiguracji application.yaml , jak pokazano w poniższym przykładzie:

    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. Edytuj plik klasy uruchamiania, aby wyświetlić następującą zawartość. Ten kod generuje uzupełnienia.

    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. Uruchom aplikację. Po uruchomieniu aplikacja generuje dzienniki podobne do następującego przykładu:

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

Wdrażanie w usłudze 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 przy użyciu kompleksowego monitorowania i diagnostyki, zarządzania konfiguracją, odnajdywania usług, integracji/ciągłego wdrażania, wdrożeń niebieskich zielonych i nie tylko. Aby wdrożyć aplikację w usłudze Azure Spring Apps, zobacz Wdrażanie pierwszej aplikacji w usłudze Azure Spring Apps.

Następne kroki

Aby dowiedzieć się więcej na temat oprogramowania Spring i platformy Azure, przejdź do centrum dokumentacji dotyczącej oprogramowania Spring na platformie Azure.