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.
W tym samouczku pokazano, jak używać Spring Boot Starter dla Azure Service Bus JMS do wysyłania i odbierania komunikatów za pośrednictwem Service Bus queues i topics.
Platforma Azure udostępnia rozwiązanie do asynchronicznej obsługi komunikatów o nazwie Azure Service Bus („Service Bus”) oparte na standardzie Advanced Message Queueing Protocol 1.0 („AMQP 1.0”). Usługę Service Bus można używać na różnych obsługiwanych platformach platformy Azure.
Szablon startowy Spring Boot dla usługi Azure Service Bus JMS zapewnia integrację spring JMS z usługą Service Bus.
W poniższym wideo opisano sposób integrowania aplikacji Spring JMS z usługą Azure Service Bus przy użyciu programu JMS 2.0.
W tym samouczku uwzględniliśmy dwie metody uwierzytelniania: uwierzytelnianie Microsoft Entra i uwierzytelnianie za pomocą sygnatur dostępu współdzielonego (SAS). Karta Bezhasłowe zawiera uwierzytelnianie Microsoft Entra, a karta parametry połączenia zawiera uwierzytelnianie SAS.
Uwierzytelnianie Entra firmy Microsoft to mechanizm łączenia się z usługą Azure Service Bus JMS przy użyciu tożsamości zdefiniowanych w identyfikatorze Entra firmy Microsoft. Dzięki uwierzytelnieniu firmy Microsoft Entra można zarządzać tożsamościami użytkowników bazy danych i innymi usługi firmy Microsoft w centralnej lokalizacji, co upraszcza zarządzanie uprawnieniami.
Uwierzytelnianie SAS używa łańcucha połączenia przestrzeni nazw usługi Azure Service Bus do delegowanego dostępu do usługi Service Bus JMS. Jeśli zdecydujesz się używać sygnatur dostępu współdzielonego jako poświadczeń, musisz samodzielnie zarządzać parametry połączenia.
Wymagania wstępne
Subskrypcja platformy Azure — utwórz bezpłatnie.
Zestaw Java Development Kit (JDK) w wersji 8 lub nowszej.
Apache Maven, wersja 3.2 lub nowsza.
Kolejka lub temat dla usługi Azure Service Bus. Jeśli go nie masz, zobacz Użyj portalu Azure do tworzenia przestrzeni nazw usługi Service Bus i kolejki lub Użyj portalu Azure do tworzenia tematu usługi Service Bus i subskrypcji do tematu.
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 w obszarze Zależności dodaj zależność Spring Web , a następnie wybierz pozycję Java w wersji 8 lub nowszej.
Ważne
Aby wykonać kroki opisane w tym samouczku, wymagana jest wersja Spring Boot 2.5 lub nowsza.
Wysyłanie i odbieranie komunikatów z usługi Azure Service Bus
Za pomocą kolejki lub tematu dla usługi Azure Service Bus można wysyłać i odbierać komunikaty przy użyciu rozwiązania Spring Cloud Azure Service Bus JMS.
Aby zainstalować moduł startowy spring Cloud Azure Service Bus JMS, 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>Uwaga
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, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na4.20.0.Ta struktura materiałowa (BOM) powinna być 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 Którą wersję Spring Cloud Azure powinienem używać.
Artefakt startowy Spring Cloud Azure Service Bus JMS
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId> </dependency>
Kodowanie aplikacji
Wykonaj poniższe kroki, aby skonfigurować aplikację do używania kolejki lub tematu usługi Service Bus do wysyłania i odbierania komunikatów.
Skonfiguruj poświadczenia usługi Service Bus, dodając poniższe właściwości do pliku application.properties.
Uwaga
Usługa Azure Service Bus JMS obsługuje używanie identyfikatora Entra firmy Microsoft do autoryzowania żądań do zasobów usługi Service Bus. Za pomocą identyfikatora Entra firmy Microsoft możesz użyć kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby udzielić uprawnień jednostce zabezpieczeń, która może być użytkownikiem lub jednostką usługi aplikacji.
Ważne
Przed rozpoczęciem upewnij się, że masz przypisaną rolę Właściciela danych usługi Azure Service Bus do aktualnie używanego konta Microsoft Entra. Aby uzyskać więcej informacji, zobacz przypisywanie ról Azure za pomocą portalu Azure.
spring.jms.servicebus.namespace=<ServiceBusNamespace> spring.jms.servicebus.pricing-tier=<ServiceBusPricingTier> spring.jms.servicebus.passwordless-enabled=true spring.jms.listener.receive-timeout=60000W poniższej tabeli opisano pola w konfiguracji:
Pole opis spring.jms.servicebus.namespaceOkreśl przestrzeń nazw, którą uzyskałeś w wystąpieniu usługi Service Bus z portalu Azure. spring.jms.servicebus.pricing-tierOkreśl warstwę cenową magistrali usług. Obsługiwane wartości to premiumistandard. Warstwa Premium używa usługi Java Message Service (JMS) 2.0, podczas gdy warstwa Standardowa używa programu JMS 1.1 do interakcji z usługą Azure Service Bus.spring.jms.servicebus.passwordless-enabledOkreśl, czy używać metody uwierzytelniania bez hasła. spring.jms.listener.receive-timeoutDomyślnie wartość limitu czasu odbierania wynosi 1000. Zalecamy ustawienie go na 60000 Dodaj
@EnableJms, aby włączyć obsługę punktów końcowych z adnotacjami dla odbiornika JMS. UżyjJmsTemplatedo wysyłania komunikatów i@JmsListenerdo odbierania komunikatów, jak pokazano w poniższym przykładzie.import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.jms.annotation.EnableJms; import org.springframework.boot.CommandLineRunner; import org.springframework.jms.annotation.JmsListener; import org.springframework.jms.core.JmsTemplate; @SpringBootApplication @EnableJms public class ServiceBusJMSQueueApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(ServiceBusJMSQueueApplication.class); private static final String QUEUE_NAME = "<QueueName>"; @Autowired private JmsTemplate jmsTemplate; public static void main(String[] args) { SpringApplication.run(ServiceBusJMSQueueApplication.class, args); } @Override public void run(String... args) { LOGGER.info("Sending message"); jmsTemplate.convertAndSend(QUEUE_NAME, "Hello World"); } @JmsListener(destination = QUEUE_NAME, containerFactory = "jmsListenerContainerFactory") public void receiveMessage(String message) { LOGGER.info("Message received: {}", message); } }Zamień
<QueueName>na nazwę kolejki skonfigurowaną w przestrzeni nazw usługi Service Bus.Napiwek
W tym samouczku nie ma operacji związanych z uwierzytelnianiem w żadnych konfiguracjach ani w kodzie. Jednak nawiązywanie połączenia z usługami platformy Azure wymaga uwierzytelniania. Aby ukończyć uwierzytelnianie, musisz użyć usługi Azure Identity. Platforma Spring Cloud na platformie Azure używa
DefaultAzureCredentialbiblioteki tożsamości platformy Azure, która ułatwia uzyskiwanie poświadczeń bez żadnych zmian w kodzie.DefaultAzureCredentialobsługuje wiele metod uwierzytelniania i określa, która metoda ma być używana w czasie wykonywania. Takie podejście umożliwia aplikacji używanie różnych metod uwierzytelniania w różnych środowiskach (takich jak środowiska lokalne i produkcyjne) bez implementowania kodu specyficznego dla środowiska. Aby uzyskać więcej informacji, zobacz DefaultAzureCredential.Aby ukończyć uwierzytelnianie w lokalnych środowiskach deweloperskich, możesz użyć interfejsu wiersza polecenia platformy Azure, programu Visual Studio Code, programu PowerShell lub innych metod. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie platformy Azure w środowiskach deweloperskich Java. Aby ukończyć uwierzytelnianie w środowiskach hostingu platformy Azure, zalecamy użycie tożsamości zarządzanej przypisanej przez użytkownika. Aby uzyskać więcej informacji, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure?
Uruchom aplikację. Powinny zostać wyświetlone
Sending messageiHello Worldzapisane w dzienniku aplikacji, jak pokazano w przykładzie poniżej.Sending message Message received: Hello World
Wdrażanie do 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/CD, wdrożeń typu blue-green i nie tylko. Aby wdrożyć aplikację w usłudze Azure Spring Apps, zobacz Wdrażanie pierwszej aplikacji w usłudze Azure Spring Apps.