Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak używać Azure Event Grid do wysyłania zdarzenia do topicu oraz jak korzystać z kolejki Service Bus jako Event Handler do odbierania zdarzeń w aplikacji Spring Boot.
Usługa Azure Event Grid to wysoce skalowalna, w pełni zarządzana usługa dystrybucji komunikatów Pub Sub, która oferuje elastyczne wzorce zużycia komunikatów przy użyciu protokołów MQTT i HTTP.
Warunki wstępne
Subskrypcja Azure — utwórz ją bezpłatnie.
Java Development Kit (JDK) w wersji 8 lub nowszej.
Apache Maven, wersja 3.0 lub nowsza.
Instancja tematu usługi Event Grid. Jeśli go nie masz, zobacz Utwórz temat niestandardowy lub domenę w Azure Event Grid.
Instancja kolejki w usłudze Service Bus. Jeśli go nie masz, zobacz Utwórz kolejkę w portalu Azure.
Aplikacja Spring Boot. Jeśli go nie masz, utwórz projekt Maven za pomocą narzędzia Spring Initializr. Pamiętaj, aby wybrać Maven Project oraz wersję Java 8 lub nowszą.
Subskrybowanie tematu niestandardowego
Wykonaj następujące kroki, aby utworzyć subskrypcję zdarzeń, aby poinformować usługę Event Grid o wysyłaniu zdarzeń do kolejki Service Bus:
- W portalu Azure przejdź do wystąpienia tematu usługi Event Grid.
- Wybierz opcję Subskrypcje zdarzeń na pasku narzędzi.
- Na stronie Tworzenie subskrypcji zdarzeńwprowadź wartość nazwy dla subskrypcji zdarzeń.
- Dla Typ punktu końcowego wybierz Service Bus Queue.
- Wybierz Select an endpoint, a następnie wybierz utworzone wcześniej wystąpienie Service Bus Queue.
Wysyłanie zdarzenia przez Azure Event Grid i odbieranie przez kolejkę Azure Service Bus
Za pomocą zasobu Azure Event Grid możesz wysłać zdarzenie przy użyciu usługi Spring Cloud Azure Event Grid. Zasób kolejki Azure Service Bus jako program obsługi zdarzeń umożliwia odbieranie zdarzenia przy użyciu narzędzia Spring Cloud Azure Stream Binder dla Service Bus.
Aby zainstalować moduł Spring Cloud Azure Event Grid Starter 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>7.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Notatka
Jeśli używasz platformy Spring Boot 4.0.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na7.1.0.Jeśli używasz platformy Spring Boot 3.5.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na6.1.0.Jeśli używasz platformy Spring Boot 3.1.x-3.5.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na5.25.0.Jeśli używasz środowiska Spring Boot 2.x, ustaw wersję
spring-cloud-azure-dependenciesna4.20.0.Tę listę materiałów (BOM) należy skonfigurować w sekcji
<dependencyManagement>pliku pom.xml. Dzięki temu wszystkie zależności usługi Spring Cloud Azure korzystają z tej samej wersji.Aby uzyskać więcej informacji na temat wersji używanej dla tego modelu BOM, zobacz Jakiej wersji Spring Cloud Azure powinienem użyć.
Artefakt startowy Spring Cloud Azure Event Grid:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>Artefakt kolektora strumienia Spring Cloud Azure dla Service Bus:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
Kod aplikacji
Wykonaj poniższe kroki, aby skonfigurować aplikację do wysyłania zdarzenia przy użyciu usługi Event Grid i odbierania przy użyciu usługi Service Bus Queue.
Skonfiguruj poświadczenia 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: falseNotatka
Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania opisany w tej procedurze, taki jak bazy danych, pamięci podręczne, komunikaty lub usługi sztucznej inteligencji, wymaga bardzo wysokiego stopnia zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Użyj tego przepływu tylko wtedy, gdy bardziej bezpieczne opcje, takie jak tożsamości zarządzane dla połączeń bez hasła lub bez kluczy, nie są opłacalne. W przypadku operacji maszyny lokalnej preferuj tożsamości użytkowników dla połączeń bez hasła lub bez klucza.
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"'
Wdróż do Azure Spring Apps
Teraz, gdy aplikacja Spring Boot działa lokalnie, nadszedł czas, aby przenieść ją do środowiska produkcyjnego. Azure Spring Apps ułatwia wdrażanie aplikacji Spring Boot w Azure bez żadnych zmian w kodzie. Usługa zarządza infrastrukturą aplikacji Spring, aby deweloperzy mogli skupić się na swoim kodzie. Azure Spring Apps zapewnia zarządzanie cyklem życia przy użyciu kompleksowego monitorowania i diagnostyki, zarządzania konfiguracją, odnajdywania usług, integracji CI/CD, wdrożeń blue-green oraz innych funkcji. Aby wdrożyć swoją pierwszą aplikację do Azure Spring Apps, zobacz Wdrażanie pierwszej aplikacji do Azure Spring Apps.
Następne kroki
Aby dowiedzieć się więcej na temat platformy Spring i Azure, przejdź do centrum dokumentacji Spring w Azure.