Korzystanie z usługi Azure Event Grid na platformie Spring
W tym artykule pokazano, jak za pomocą usługi Azure Event Grid wysyłać zdarzenie do tematu i używać kolejki usługi Service Bus jako procedury obsługi zdarzeń do odbierania w aplikacji Spring Boot.
Usługa Azure Event Grid to wysoce skalowalna, w pełni zarządzana usługa dystrybucji komunikatów podrzędnych pubu, która oferuje elastyczne wzorce zużycia komunikatów przy użyciu protokołów MQTT i HTTP.
Wymagania wstępne
Subskrypcja platformy Azure — utwórz bezpłatnie.
Zestaw Java Development Kit (JDK) w wersji 8 lub nowszej.
Apache Maven, wersja 3.0 lub nowsza.
Wystąpienie tematu usługi Event Grid. Jeśli go nie masz, zobacz Tworzenie tematu niestandardowego lub domeny w usłudze Azure Event Grid.
Wystąpienie kolejki usługi Service Bus. Jeśli go nie masz, zobacz Tworzenie kolejki w witrynie Azure Portal.
Aplikacja Spring Boot. Jeśli go nie masz, utwórz projekt Maven za pomocą narzędzia Spring Initializr. Pamiętaj, aby wybrać pozycję Projekt Maven i wybrać pozycję Java w wersji 8 lub nowszej.
Subskrybowanie do tematu niestandardowego
Wykonaj następujące kroki, aby utworzyć subskrypcję zdarzeń, aby poinformować usługę Event Grid o wysyłaniu zdarzeń do kolejki usługi Service Bus:
- W witrynie Azure Portal przejdź do wystąpienia tematu usługi Event Grid.
- Wybierz pozycję Subskrypcje zdarzeń na pasku narzędzi.
- Na stronie Tworzenie subskrypcji zdarzeń wprowadź wartość nazwy subskrypcji zdarzeń.
- W polu Typ punktu końcowego wybierz pozycję Kolejka usługi Service Bus.
- Wybierz pozycję Wybierz punkt końcowy , a następnie wybierz utworzone wcześniej wystąpienie kolejki usługi Service Bus.
Wysyłanie zdarzenia przez usługę Azure Event Grid i odbieranie ich przez kolejkę usługi Azure Service Bus
Za pomocą zasobu usługi Azure Event Grid możesz wysłać zdarzenie przy użyciu usługi Spring Cloud Azure Event Grid. Za pomocą zasobu kolejki usługi Azure Service Bus jako procedury obsługi zdarzeń można odbierać zdarzenie przy użyciu narzędzia Spring Cloud Azure Stream Binder for Service Bus.
Aby zainstalować moduł startowy spring Cloud Azure Event Grid i moduł Spring Cloud Azure Stream Binder Service Bus, dodaj następujące zależności do pliku pom.xml :
Projekt 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>
Uwaga
Jeśli używasz środowiska Spring Boot 2.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencies
wersję na4.19.0
. Ten rachunek materiału (BOM) należy skonfigurować w<dependencyManagement>
sekcji pliku pom.xml . Gwarantuje to, że wszystkie zależności platformy Azure platformy Spring Cloud korzystają z tej samej wersji. Aby uzyskać więcej informacji na temat wersji używanej dla tego modelu BOM, zobacz Która wersja platformy Spring Cloud platformy Azure powinna być używana.Artefakt startowy spring Cloud Azure Event Grid:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>
Artefakt usługi Service Bus binder usługi Azure Stream Spring Cloud:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
Kodowanie aplikacji
Wykonaj poniższe kroki, aby skonfigurować aplikację do wysyłania zdarzenia przy użyciu usługi Event Grid i odbierania przy użyciu kolejki usługi Service Bus.
Skonfiguruj poświadczenia usługi Azure Event Grid i Service Bus w pliku konfiguracji application.yaml , jak pokazano w poniższym przykładzie:
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
Edytuj plik klasy uruchamiania, aby wyświetlić następującą zawartość. Ten kod generuje uzupełnienia.
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()); } }
Uruchom aplikację. Po uruchomieniu aplikacja generuje dzienniki podobne do następującego przykładu:
New event published: '"FirstName: John, LastName: James"' ... New event received: '"FirstName: John, LastName: James"'
Wdrażanie w usłudze Azure Spring Apps
Teraz, gdy aplikacja Spring Boot działa lokalnie, nadszedł czas, aby przenieść ją do środowiska produkcyjnego. Usługa Azure Spring Apps ułatwia wdrażanie aplikacji Spring Boot na platformie Azure bez żadnych zmian w kodzie. Usługa zarządza infrastrukturą aplikacji Spring, aby deweloperzy mogli skupić się na swoim kodzie. Usługa Azure Spring Apps zapewnia zarządzanie cyklem życia przy użyciu kompleksowego monitorowania i diagnostyki, zarządzania konfiguracją, odnajdywania usług, integracji/ciągłego wdrażania, wdrożeń niebieskich zielonych i nie tylko. Aby wdrożyć aplikację w usłudze Azure Spring Apps, zobacz Wdrażanie pierwszej aplikacji w usłudze Azure Spring Apps.
Następne kroki
Aby dowiedzieć się więcej na temat oprogramowania Spring i platformy Azure, przejdź do centrum dokumentacji dotyczącej oprogramowania Spring na platformie Azure.