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 te gebruiken als een Gebeurtenis-handler om te ontvangen in een Spring Boot-toepassing.
De Azure Event Grid-service is een uiterst schaalbare, volledig beheerde Pub Sub-berichtendistributieservice die flexibele patronen voor berichtverbruik biedt met behulp van de MQTT- en HTTP-protocollen.
Voorwaarden
Een Azure-abonnement, maak er gratis een aan.
Java Development Kit (JDK) versie 8 of hoger.
Apache Mavenversie 3.0 of hoger.
Een Event Grid-onderwerpexemplaar. Zie Een aangepast onderwerp of een domein maken in Azure Event Gridals u er nog geen hebt.
Een Service Bus Queue-exemplaar. Zie Een wachtrij maken in Azure Portalals u er nog geen hebt.
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 de Azure-portal naar uw Event Grid-onderwerp-exemplaar.
- Selecteer Gebeurtenisabonnementen op de werkbalk.
- Voer op de pagina Gebeurtenisabonnement makeneen naam waarde in voor het gebeurtenisabonnement.
- Selecteer Service Bus-wachtrijvoor eindpunttype.
- Kies Selecteer een eindpunt en selecteer vervolgens het Service Bus-wachtrijexemplaren 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 moet u configureren in de sectie<dependencyManagement>
van uw pom.xml-bestand. Dit zorgt ervoor dat alle Spring Cloud Azure-afhankelijkheden dezelfde versie gebruiken. Voor meer informatie over de versie die voor deze BOM wordt gebruikt, zie Welke versie van Spring Cloud Azure moet ik gebruiken.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>
Codeer de toepassing
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. Azure Spring Apps- maakt het eenvoudig om Spring Boot-toepassingen te 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 Appsom uw toepassing te implementeren in Azure Spring Apps.
Volgende stappen
Ga naar het Documentatiecentrum van Spring op Azure voor meer informatie over Spring en Azure.