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
En Azure-prenumeration – skapa en kostnadsfri.
Java Development Kit (JDK) version 8 eller senare.
Apache Maven, version 3.0 eller senare.
En instans av Event Grid Topic. Om du inte har ett sådant, se Skapa ett anpassat ämne eller en domän i Azure Event Grid.
En Service Bus-köinstans. Om du inte har någon kan du läsa Skapa en kö i Azure-portalen.
Ett Spring Boot-program. Om du inte har ett skapar du ett Maven-projekt med Spring Initializr. Se till att välja Maven Project och välj Java version 8 eller senare.
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:
- I Azure-portalen går du till din Event Grid Topic-instans.
- Välj Eventprenumerationer i verktygsfältet.
- På sidan Skapa händelseprenumerationanger du ett namn värde för händelseprenumerationen.
- För Slutpunktstypväljer du Service Bus Queue.
- 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 till4.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.
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
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()); } }
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.