Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel leest u hoe u Azure Event Grid kunt gebruiken om een gebeurtenis naar een onderwerp te verzenden en Service Bus Wachtrij te gebruiken als een Event-handler voor ontvangst in een Spring Boot-toepassing.
De Azure Event Grid-service is een zeer schaalbare, volledig beheerde Pub Sub-berichtendistributieservice die flexibele patronen voor berichtverbruik biedt met behulp van de MQTT- en HTTP-protocollen.
Voorwaarden
Een Azure-abonnement- gratis een abonnement maken.
Java Development Kit (JDK) versie 8 of hoger.
Apache Maven, versie 3.0 of hoger.
Een Event Grid-onderwerpexemplaar. Zie Maak een aangepast onderwerp of een domein in Azure Event Grid als u er nog geen hebt.
Een Service Bus Queue-exemplaar. Zie Maak een wachtrij in de Azure-portal als u er nog geen hebt.
Een Spring Boot-toepassing. Als u er nog geen hebt, maakt u een Maven-project met de Spring Initializr. Selecteer Maven Project en selecteer Java versie 8 of hoger.
Abonneren op aangepast onderwerp
Gebruik de volgende stappen om een gebeurtenisabonnement te maken om het Event Grid te laten weten dat gebeurtenissen naar de Service Bus wachtrij moeten worden verzonden:
- Navigeer in de Azure-portal naar uw Event Grid-onderwerpsexemplaar.
- Selecteer Gebeurtenisabonnementen op de werkbalk.
- Voer op de pagina Gebeurtenisabonnement maken een naamwaarde in voor het gebeurtenisabonnement.
- Voor Endpoint-type selecteert u Service Bus Queue.
- Kies Selecteer een eindpunt en selecteer vervolgens het Service Bus wachtrij-exemplaar dat u eerder hebt gemaakt.
Een gebeurtenis verzenden per Azure Event Grid en ontvangen door Azure Service Bus wachtrij
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 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-module Service Bus wilt installeren, voegt u de volgende afhankelijkheden toe aan uw bestand pom.xml:
De Spring Cloud Azure Stuklijst (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>Notitie
Als u Spring Boot 4.0.x gebruikt, moet u de
spring-cloud-azure-dependenciesversie instellen op7.1.0.Als u Spring Boot 3.5.x gebruikt, moet u de
spring-cloud-azure-dependenciesversie instellen op6.1.0.Als u Spring Boot 3.1.x-3.5.x gebruikt, moet u de
spring-cloud-azure-dependenciesversie instellen op5.25.0.Als u Spring Boot 2.x gebruikt, moet u de
spring-cloud-azure-dependenciesversie instellen op4.20.0.Deze BOM (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 Service Bus-artefact van de Spring Cloud Azure Stream Binder:
<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: falseNotitie
Microsoft raadt aan de veiligste verificatiestroom te gebruiken die beschikbaar is. De verificatiestroom die in deze procedure wordt beschreven, zoals voor databases, caches, berichten of AI-services, vereist een zeer hoge mate van vertrouwen in de toepassing en brengt risico's met zich mee die niet aanwezig zijn in andere stromen. Gebruik deze stroom alleen wanneer veiligere opties, zoals beheerde identiteiten voor wachtwoordloze of sleutelloze verbindingen, niet haalbaar zijn. Voor bewerkingen van lokale machines geeft u de voorkeur aan gebruikersidentiteiten voor verbindingen zonder wachtwoord of sleutelloze verbindingen.
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 behulp van uitgebreide bewaking en diagnose, configuratiebeheer, servicedetectie, CI/CD-integratie, blauwgroene implementaties en meer. Zie Uw eerste toepassing implementeren voor Azure Spring Apps om uw toepassing te implementeren in Azure Spring Apps.
Volgende stappen
Als u meer wilt weten over Spring en Azure, gaat u verder naar het Spring op Azure documentatiecentrum.