Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se dozvíte, jak pomocí Azure Event Grid odeslat událost do tématu a použít frontu Service Bus jako obslužnou rutinu Event Handler pro příjem 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 jedno 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 Vytváření vlastního tématu nebo domény v Azure Event Grid.
Instance fronty služby Service Bus. Pokud ho nemáte, podívejte se na Vytvoření fronty na portálu Azure.
Aplikace Spring Boot. Pokud ho nemáte, vytvořte projekt Maven pomocí aplikace Spring Initializr. Nezapomeňte vybrat Maven Project a vybrat Java verze 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ílala události do fronty Service Bus:
- Na portálu Azure přejděte k instanci tématu Event Gridu.
- 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.
- Jako typ vyberte Service Bus Fronta.
- Zvolte Výběr koncového bodu a pak vyberte instanci fronty Service Bus, kterou jste vytvořili dříve.
Odeslat událost pomocí Azure Event Grid a přijmout ji prostřednictvím fronty Azure Service Bus
S prostředkem Azure Event Grid můžete odeslat událost pomocí Spring Cloud Azure Event Grid. S prostředkem fronty Azure Service Bus jako obslužnou rutinou události můžete událost přijmout pomocí Spring Cloudu Azure Stream Binder pro Service Bus.
Pokud chcete nainstalovat modul Spring Cloud Azure Event Grid Starter a modul Spring Cloud Azure Stream Binder Service Bus, přidejte do souboru pom.xml následující závislosti:
Spring Cloud Azure Bill of Materials (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>Poznámka
Pokud používáte Spring Boot 4.0.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na7.1.0.Pokud používáte Spring Boot 3.5.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na6.1.0hodnotu.Pokud používáte Spring Boot 3.1.x-3.5.x, nezapomeňte nastavit verzi na
spring-cloud-azure-dependencies.Pokud používáte Spring Boot 2.x, nezapomeňte nastavit
spring-cloud-azure-dependenciesverzi na4.20.0.Tato faktura materiálu (BOM) by měla být nakonfigurována v
<dependencyManagement>části vašeho pom.xml souboru. Tím zajistíte, že všechny závislosti Spring Cloud Azure budou používat stejnou verzi.Další informace o verzi použité pro tuto BOM najdete v tématu Kterou verzi Spring Cloud Azure bych měl/a použít.
Artefakt Spring Cloud Azure Event Grid Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>Artefakt Spring Cloud Azure Service Bus Stream Binder:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
Kódování aplikace
Pomocí následujícího postupu nakonfigurujte aplikaci tak, aby odesílala událost pomocí Event Gridu a přijímala ji pomocí Service Bus Queue.
Nakonfigurujte přihlašovací údaje 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: falsePoznámka
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Tok ověřování popsaný v tomto postupu, například pro databáze, mezipaměti, zasílání zpráv nebo služby AI, vyžaduje velmi vysoký stupeň důvěryhodnosti v aplikaci a nese rizika, která nejsou přítomna v jiných tocích. Tento tok používejte pouze v případě, že nejsou k dispozici zabezpečenější možnosti, jako jsou spravované identity pro připojení bez hesla nebo bez klíčů. V případě místních operací počítačů upřednostňujete identity uživatelů pro připojení bez hesla nebo bez klíčů.
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 aplikaci nasadit do Azure Spring Apps, viz Nasazení vaší první aplikace na Azure Spring Apps.
Další kroky
Další informace o Springu a Azure najdete v centru dokumentace Spring on Azure.