Azure Event Grid gebruiken in spring
In dit artikel leest u hoe u Azure Event Grid gebruikt om een gebeurtenis naar een onderwerp te verzenden en Service Bus-wachtrij als gebeurtenis-handler te gebruiken voor ontvangst in een Spring Boot-toepassing.
De Azure Event Grid-service is een zeer schaalbare, volledig beheerde Pub Sub-berichtendistributieservice die flexibele berichtverbruikspatronen biedt met behulp van de MQTT- en HTTP-protocollen.
Vereisten
Een Azure-abonnement (u kunt een gratis abonnement maken).
Java Development Kit (JDK) versie 8 of hoger.
Apache Maven, versie 3.0 of hoger.
Een Event Grid-onderwerpexemplaren. Zie Een aangepast onderwerp of een domein maken in Azure Event Grid als u er nog geen hebt.
Een Service Bus Queue-exemplaar. Als u nog geen wachtrij hebt, raadpleegt u Een wachtrij maken in Azure Portal.
Een Spring Boot-toepassing. Als u er nog geen hebt, maakt u een Maven-project met de Spring Initializr. Zorg ervoor dat u Maven Project selecteert en Java-versie 8 of hoger selecteert.
Abonneren op aangepast onderwerp
Gebruik de volgende stappen om een gebeurtenisabonnement te maken om het Event Grid te vertellen dat gebeurtenissen naar de Service Bus-wachtrij moeten worden verzonden:
- Navigeer in Azure Portal naar uw Event Grid-onderwerpexemplaren.
- Selecteer Gebeurtenisabonnementen op de werkbalk.
- Voer op de pagina Gebeurtenisabonnement maken een naamwaarde in voor het gebeurtenisabonnement.
- Selecteer Service Bus-wachtrij voor eindpunttype.
- Kies Selecteer een eindpunt en selecteer vervolgens het Service Bus Queue-exemplaar dat u eerder hebt gemaakt.
Een gebeurtenis verzenden door Azure Event Grid en ontvangen door Azure Service Bus Queue
Met een Azure Event Grid-resource kunt u een gebeurtenis verzenden met behulp van Spring Cloud Azure Event Grid. Met een Azure Service Bus Queue-resource als gebeurtenis-handler kunt u de gebeurtenis ontvangen met behulp van Spring Cloud Azure Stream Binder voor Service Bus.
Als u de Spring Cloud Azure Event Grid Starter-module en de Spring Cloud Azure Stream Binder Service Bus-module wilt installeren, voegt u de volgende afhankelijkheden toe aan uw pom.xml-bestand :
De 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>
Notitie
Als u Spring Boot 2.x gebruikt, moet u de
spring-cloud-azure-dependencies
versie instellen op4.19.0
. Deze stuklijst (Bill of Material) moet worden geconfigureerd in de<dependencyManagement>
sectie van uw pom.xml-bestand . Dit zorgt ervoor dat alle Spring Cloud Azure-afhankelijkheden dezelfde versie gebruiken. Zie welke versie van Spring Cloud Azure moet ik gebruiken voor meer informatie over de versie die voor deze BOM wordt gebruikt.Het Spring Cloud Azure Event Grid Starter-artefact:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>
Het Spring Cloud Azure Stream Binder Service Bus-artefact:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
De toepassing coderen
Gebruik de volgende stappen om uw toepassing te configureren voor het verzenden van een gebeurtenis met behulp van Event Grid en ontvangen met behulp van Service Bus-wachtrij.
Configureer Azure Event Grid- en Service Bus-referenties in het configuratiebestand application.yaml , zoals wordt weergegeven in het volgende voorbeeld:
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
Bewerk het opstartklassebestand om de volgende inhoud weer te geven. Met deze code worden voltooiingen gegenereerd.
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()); } }
Start de toepassing. Na het starten produceert de toepassing logboeken die vergelijkbaar zijn met het volgende voorbeeld:
New event published: '"FirstName: John, LastName: James"' ... New event received: '"FirstName: John, LastName: James"'
Implementeren in Azure Spring Apps
Nu de Spring Boot-toepassing lokaal wordt uitgevoerd, is het tijd om deze naar productie te verplaatsen. Met Azure Spring Apps kunt u Eenvoudig Spring Boot-toepassingen implementeren in Azure zonder codewijzigingen. De service beheert de infrastructuur van Spring-toepassingen, zodat ontwikkelaars zich kunnen richten op hun code. Azure Spring Apps biedt levenscyclusbeheer met uitgebreide bewaking en diagnose, configuratiebeheer, servicedetectie, CI/CD-integratie, blauwgroene implementaties en meer. Zie Uw eerste toepassing implementeren in Azure Spring Apps om uw toepassing te implementeren in Azure Spring Apps.
Volgende stappen
Voor meer informatie over Spring en Azure gaat u door naar het documentatiecentrum van Spring op Azure.