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 samouczku pokazano, jak używać komponentu Spring Boot Starter for Azure Service Bus JMS do wysyłania i otrzymywania komunikatów z Service Bus queues i topics.
Azure zapewnia asynchroniczną platformę obsługi komunikatów o nazwie Azure Service Bus ("Service Bus"), która jest oparta na standardzie Advanced Message Queueing Protocol 1.0 ("AMQP 1.0"). Można użyć Service Bus na różnych obsługiwanych platformach Azure.
Szablon startowy Spring Boot dla Azure Service Bus JMS zapewnia integrację Spring JMS z Azure Service Bus.
W poniższym filmie wideo opisano sposób integrowania aplikacji Spring JMS z Azure Service Bus przy użyciu programu JMS 2.0.
W tym samouczku przedstawiono dwie metody uwierzytelniania: uwierzytelnianie Microsoft Entra i Uwierzytelnianie sygnatur dostępu współdzielonego. Karta Passwordless pokazuje uwierzytelnianie Microsoft Entra, a karta Ciąg połączenia pokazuje uwierzytelnianie SAS.
Uwierzytelnianie za pomocą Microsoft Entra to mechanizm używany do łączenia się z Azure Service Bus JMS przy użyciu tożsamości zdefiniowanych w Microsoft Entra ID. Dzięki uwierzytelnianiu Microsoft Entra można zarządzać tożsamościami użytkowników bazy danych i innymi usługami Microsoft w centralnym miejscu, co upraszcza zarządzanie uprawnieniami.
Uwierzytelnianie SAS używa ciągu połączenia usługi Azure Service Bus do delegowanego dostępu do JMS Service Bus. Jeśli zdecydujesz się używać sygnatur dostępu współdzielonego jako poświadczeń, musisz samodzielnie zarządzać łańcuchem połączenia.
Wymagania wstępne
Subskrypcja Azure — utwórz ją bezpłatnie.
Java Development Kit (JDK) w wersji 8 lub nowszej.
Apache Maven, wersja 3.2 lub nowsza.
Kolejka lub temat dla Azure Service Bus. Jeśli go nie masz, zobacz Użyj portalu Azure, aby utworzyć przestrzeń nazw Service Bus i kolejkę lub Użyj portalu Azure, aby utworzyć temat Service Bus i subskrypcje tematu.
Aplikacja Spring Boot. Jeśli go nie masz, utwórz projekt Maven za pomocą narzędzia Spring Initializr. Pamiętaj, aby wybrać Maven Project i w obszarze Dependencies dodaj Spring Web a następnie wybierz 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 Azure Service Bus
Za pomocą kolejki lub tematu dla 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>7.2.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Uwaga
Jeśli używasz platformy Spring Boot 4.0.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na7.2.0.Jeśli używasz platformy Spring Boot 3.5.x, pamiętaj, aby ustawić
spring-cloud-azure-dependencieswersję na6.2.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 w tym BOM, zobacz Którą wersję Spring Cloud Azure powinienem użyć?.
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 Service Bus lub tematu do wysyłania i odbierania komunikatów.
Skonfiguruj poświadczenia Service Bus, dodając następujące właściwości do pliku application.properties.
Uwaga
Azure Service Bus JMS obsługuje autoryzację żądań do zasobów Service Bus, za pomocą Microsoft Entra ID. Za pomocą Microsoft Entra ID można użyć Azure RBAC (kontrola dostępu oparta na rolach), aby nadać uprawnienia podmiotowi zabezpieczającemu, którym może być użytkownik lub jednostka usługi aplikacji.
Ważne
Przed rozpoczęciem upewnij się, że masz przypisaną rolę właściciela danych Azure Service Bus do aktualnie używanego konta Microsoft Entra. Aby uzyskać więcej informacji, zobacz Przypisania ról Azure przy użyciu 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 swoim wystąpieniu usługi Service Bus w portalu Azure. spring.jms.servicebus.pricing-tierOkreśl warstwę cenową magistrali usług. Obsługiwane wartości to premiumistandard. Warstwa Premium korzysta z usługi Java Message Service (JMS) 2.0, podczas gdy warstwa Standardowa używa programu JMS 1.1 do interakcji z 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); } }Zastąp
<QueueName>swoją nazwą kolejki skonfigurowaną w przestrzeni nazw 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 Azure wymaga uwierzytelniania. Aby ukończyć uwierzytelnianie, musisz użyć Azure Identity. Usługa Spring Cloud Azure używa
DefaultAzureCredential, którą udostępnia biblioteka Azure Identity, aby ułatwić 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ć Azure CLI, Visual Studio Code, programu PowerShell lub innych metod. Aby uzyskać więcej informacji, zobacz uwierzytelnianie w Azure w środowiskach deweloperskich Java. Aby ukończyć uwierzytelnianie w środowiskach hostingu Azure, zalecamy użycie tożsamości zarządzanej przypisanej przez użytkownika. Aby uzyskać więcej informacji, zobacz Jak są tożsamości zarządzane dla zasobów Azure?
Uruchom aplikację. Powinieneś zobaczyć
Sending messageiHello worldw dzienniku aplikacji, jak pokazano w poniższym przykładzie.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. 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 i nie tylko. Aby wdrożyć aplikację do Azure Spring Apps, zapoznaj się z Wdrożenie pierwszej aplikacji do Azure Spring Apps.