Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du använder Azure Event Grid för att skicka en händelse till ett ämne och använda Service Bus Queue som en Event Handler för att ta emot i ett Spring Boot-program.
Tjänsten Azure Event Grid är en mycket skalbar, fullständigt hanterad pubundermeddelandedistributionstjänst 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 något läser du 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. Välj 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 instruera Event Grid att skicka händelser till Service Bus-kön:
- I Azure-portalen går du till event grid-ämnesinstansen.
- Välj Eventprenumerationer i verktygsfältet.
- På sidan Skapa händelseprenumerationanger du ett namn värde för händelseprenumerationen.
- För Endpoint Type väljer du Service Bus Queue.
- Välj Välj en slutpunkt och välj sedan den Service Bus köinstans som du skapade tidigare.
Skicka en händelse med Azure Event Grid och ta emot av Azure Service Bus Queue
Med en Azure Event Grid resurs kan du skicka ett evenemang med hjälp av Spring Cloud Azure Event Grid. Med en Azure Service Bus Queue-resurs som händelsehanterare kan du ta emot händelsen med Spring Cloud Azure Stream Binder för Service Bus.
Om du vill installera Spring Cloud Azure Event Grid Starter-modulen och modulen Spring Cloud Azure Stream Binder Service Bus lägger du till följande beroenden i filen pom.xml:
Spring Cloud Azure materialförteckning (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Obs
Om du använder Spring Boot 4.0.x måste du ange
spring-cloud-azure-dependenciesversionen till7.1.0.Om du använder Spring Boot 3.5.x måste du ange
spring-cloud-azure-dependenciesversionen till6.1.0.Om du använder Spring Boot 3.1.x-3.5.x måste du ange
spring-cloud-azure-dependenciesversionen till5.25.0.Om du använder Spring Boot 2.x måste du ange
spring-cloud-azure-dependenciesversionen till4.20.0.Den här materialspecifikationen (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 vilken version som används för denna BOM finns i dokumentationen Which Version of Spring Cloud Azure Should I Use.
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 artefakt:
<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 hjälp av Event Grid och ta emot med hjälp av Service Bus Queue.
Konfigurera Azure Event Grid- och Service Bus-autentiseringsuppgifter 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: falseObs
Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Det autentiseringsflöde som beskrivs i den här proceduren, till exempel för databaser, cacheminnen, meddelanden eller AI-tjänster, kräver en mycket hög grad av förtroende för programmet och medför risker som inte finns i andra flöden. Använd endast det här flödet när säkrare alternativ, till exempel hanterade identiteter för lösenordslösa eller nyckellösa anslutningar, inte är genomförbara. För lokala datoråtgärder föredrar du användaridentiteter för lösenordslösa eller nyckellösa anslutningar.
Redigera startklassfilen för att visa följande innehåll. Den här koden genererar kompletteringar.
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 kan du fortsätta till Dokumentationscentret för Spring on Azure.