Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł pokazuje, jak używać usługi Azure Event Grid do wysyłania zdarzeń do tematu oraz wykorzystywać kolejkę usługi Service Bus jako program obsługi zdarzeń, aby odbierać je w aplikacji Spring Boot.
** Usługa Azure Event Grid to wysoce skalowalna, w pełni zarządzana usługa komunikacji Pub/Sub, która oferuje elastyczne wzorce odbioru komunikatów przy użyciu protokołów MQTT i HTTP.
Warunki wstępne
Abonament Azure — utwórz go za darmo.
Zestaw programistyczny Java (JDK) w wersji 8 lub wyższej.
Instancja 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 Service Bus. Jeśli go nie masz, zobacz Tworzenie kolejki w portalu Azure.
Aplikacja Spring Boot. Jeśli go nie masz, utwórz projekt Maven przy użyciu Spring Initializr. Pamiętaj, aby wybrać projekt Maven i wybrać wersję Javy 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 usługi Service Bus:
- W witrynie Azure Portal 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ń.
- W przypadku typu punktu końcowego wybierz pozycję kolejki usługi Service Bus .
- Wybierz , 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 go 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. Używając zasobu kolejki w usłudze Azure Service Bus jako obsługującej zdarzenia, można odbierać zdarzenie za pomocą 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>6.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Notatka
Jeśli używasz środowiska Spring Boot 3.0.x-3.4.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na5.23.0.Jeśli używasz środowiska Spring Boot 2.x, ustaw wersję
spring-cloud-azure-dependenciesna4.20.0.Ta struktura materiałowa (BOM) powinna zostać skonfigurowana w sekcji
<dependencyManagement>pliku pom.xml. Gwarantuje to, że wszystkie zależności Spring Cloud Azure korzystają z tej samej wersji.Aby uzyskać więcej informacji na temat wersji używanej dla tego BOM, zobacz Jakiej wersji Spring Cloud Azure należy używać.
Artefakt startowy Spring Cloud Azure Event Grid:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>Artefakt usługi Spring Cloud Azure Stream Binder 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 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: 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"'
Wdrażanie 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 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ą, odkrywania usług, integracji CI/CD, wdrożeń typu blue-green i nie tylko. Aby wdrożyć aplikację w usłudze Azure Spring Apps, zobacz
Następne kroki
Aby dowiedzieć się więcej na temat platformy Spring i platformy Azure, przejdź do Centrum dokumentacji platformy Azure.