Dela via


Använda Azure Event Grid på våren

Den här artikeln visar dig hur du använder Azure Event Grid för att skicka ett event till ett topic och använda Service Bus Queue som en Event Handler för mottagning i en Spring Boot-applikation.

Tjänsten Azure Event Grid är en mycket skalbar, fullständigt hanterad distributionstjänst för pubundermeddelanden som erbjuder flexibla mönster för meddelandeförbrukning med hjälp av MQTT- och HTTP-protokollen.

Förutsättningar

Prenumerera på anpassat ämne

Använd följande steg för att skapa en händelseprenumeration för att uppmana Event Grid att skicka händelser till Service Bus-kön:

  1. I Azure-portalen går du till din Event Grid Topic-instans.
  2. Välj Eventprenumerationer i verktygsfältet.
  3. På sidan Skapa händelseprenumerationanger du ett namn värde för händelseprenumerationen.
  4. För Slutpunktstypväljer du Service Bus Queue.
  5. Välj Välj en slutpunkt och välj sedan den Service Bus Queue-instans som du skapade tidigare.

Skicka en händelse via Azure Event Grid och ta emot av Azure Service Bus Queue

Med en Azure Event Grid-resurs kan du skicka ett evenemang med Spring Cloud Azure Event Grid. Med en Azure Service Bus-köresurs som händelsehanterare kan du ta emot händelsen genom att använda Spring Cloud Azure Stream Binder för Service Bus.

Om du vill installera Spring Cloud Azure Event Grid Starter-modulen och Spring Cloud Azure Stream Binder Service Bus-modulen lägger du till följande beroenden i din pom.xml-fil:

  • Spring Cloud Azure Bill of Materials (BOM):

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>5.20.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Obs

    Om du använder Spring Boot 2.x måste du ange spring-cloud-azure-dependencies version till 4.19.0. Den här strukturlistan (BOM) bör konfigureras i avsnittet <dependencyManagement> i din pom.xml-fil. Detta säkerställer att alla Spring Cloud Azure-beroenden använder samma version. Mer information om den version som används för denna BOM finns i Vilken version av Spring Cloud Azure ska jag använda.

  • Spring Cloud Azure Event Grid Starter-artefakten:

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

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

Koda programmet

Använd följande steg för att konfigurera ditt program för att skicka en händelse med event grid och ta emot med hjälp av Service Bus Queue.

  1. Konfigurera autentiseringsuppgifter för Azure Event Grid och Service Bus i konfigurationsfilen application.yaml, enligt följande exempel:

    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. Redigera startklassfilen för att visa följande innehåll. Den här koden genererar slutföranden.

    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. Starta programmet. Efter starten skapar programmet loggar som liknar följande exempel:

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

Distribuera till Azure Spring Apps

Nu när Spring Boot-programmet körs lokalt är det dags att flytta det till produktion. Azure Spring Apps gör det enkelt att distribuera Spring Boot-program till Azure utan några kodändringar. Tjänsten hanterar infrastrukturen för Spring-program så att utvecklare kan fokusera på sin kod. Azure Spring Apps tillhandahåller livscykelhantering med omfattande övervakning och diagnostik, konfigurationshantering, tjänstidentifiering, CI/CD-integrering, blågröna distributioner med mera. Information om hur du distribuerar ditt program till Azure Spring Apps finns i Distribuera ditt första program till Azure Spring Apps.

Nästa steg

Om du vill veta mer om Spring och Azure fortsätter du till dokumentationscentret för Spring on Azure.