Použití Azure Event Gridu na Springu
V tomto článku se dozvíte, jak pomocí služby Azure Event Grid odeslat událost do tématu a použít frontu služby Service Bus jako přijímajícího obslužného prvku události v aplikaci Spring Boot.
Služba Azure Event Grid je vysoce škálovatelná plně spravovaná služba distribuce zpráv Pub Sub, která nabízí flexibilní vzorce spotřeby zpráv pomocí protokolů MQTT a HTTP.
Požadavky
Předplatné Azure – vytvořte si ho zdarma.
Java Development Kit (JDK) verze 8 nebo vyšší.
Apache Maven, verze 3.0 nebo vyšší.
Instance tématu na Event Grid. Pokud ho nemáte, přečtěte si téma Vytvoření vlastního tématu nebo domény ve službě Azure Event Grid.
Instance fronty služby Service Bus Queue. Pokud ho nemáte, přečtěte si téma Vytvoření fronty na webu Azure Portal.
Aplikace Spring Boot. Pokud ho nemáte, vytvořte projekt Maven pomocí Spring Initializr. Nezapomeňte vybrat projekt Maven a zvolit verzi Javy 8 nebo vyšší.
Přihlášení k odběru vlastního tématu
Pomocí následujících kroků vytvořte odběr událostí, který službě Event Grid řekne, aby odesílal události do fronty služby Service Bus:
- Na portálu Azure přejděte na instanci Event Grid Topic.
- Na panelu nástrojů vyberte odběry událostí.
- Na stránce Vytvořit odběr událostizadejte název pro odběr události.
- U koncového bodu typu vyberte frontu služby Service Bus .
- Zvolte Vyberte koncový bod a pak vyberte instanci fronty služby Service Bus, kterou jste vytvořili dříve.
Odeslání události službou Azure Event Grid a přijetí frontou služby Azure Service Bus
Pomocí prostředku Azure Event Gridu můžete odeslat událost pomocí Spring Cloud Azure Event Gridu. S využitím prostředku fronty služby Azure Service Bus jako obsluhy událostí můžete přijímat události pomocí Spring Cloud Azure Stream Binderu pro Azure Service Bus.
Pokud chcete nainstalovat úvodní modul Spring Cloud Azure Event Gridu a modul Spring Cloud Azure Stream Binder Service Bus, přidejte do souboru pom.xml následující závislosti:
Kusovník materiálů (BOM) Spring Cloud v Azure:
<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>
Poznámka
Pokud používáte Spring Boot 2.x, nezapomeňte nastavit
spring-cloud-azure-dependencies
verzi na4.19.0
. Tato faktura materiálu (BOM) by měla být nakonfigurovaná v části<dependencyManagement>
souboru pom.xml. Tím se zajistí, že všechny závislosti Azure Spring Cloudu budou používat stejnou verzi. Další informace o verzi použité pro tento BOM najdete v tématu Jakou verzi Spring Cloud Azure mám použít.Startovací artefakt Spring Cloud Azure Event Grid:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>
Artefakt služby Azure Stream Binder pro službu Bus na platformě Spring Cloud.
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
Kódování aplikace
Pomocí následujících kroků nakonfigurujte aplikaci tak, aby odesílala událost pomocí Event Gridu a přijímala ji pomocí fronty služby Service Bus.
Nakonfigurujte přihlašovací údaje služby Azure Event Grid a Service Bus v konfiguračním souboru application.yaml, jak je znázorněno v následujícím příkladu:
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
Upravte soubor spouštěcí třídy, aby se zobrazil následující obsah. Tento kód generuje dokončování.
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()); } }
Spusťte aplikaci. Po spuštění aplikace vytvoří protokoly podobné následujícímu příkladu:
New event published: '"FirstName: John, LastName: James"' ... New event received: '"FirstName: John, LastName: James"'
Nasazení do Azure Spring Apps
Teď, když máte aplikaci Spring Boot spuštěnou místně, je čas ji přesunout do produkčního prostředí. Azure Spring Apps usnadňuje nasazování aplikací Spring Boot do Azure bez jakýchkoli změn kódu. Služba spravuje infrastrukturu aplikací Spring, aby se vývojáři mohli soustředit na svůj kód. Azure Spring Apps poskytuje správu životního cyklu pomocí komplexního monitorování a diagnostiky, správy konfigurace, zjišťování služeb, integrace CI/CD, modrých zelených nasazení a dalších. Pokud chcete nasadit aplikaci do Azure Spring Apps, přečtěte si téma Nasazení první aplikace do služby Azure Spring Apps.
Další kroky
Další informace o Springu a Azure najdete v centru dokumentace Spring on Azure.