JMS használata Springben az Azure Service Bus eléréséhez
Ez az oktatóanyag bemutatja, hogyan használhatja a Spring Boot Starter for Azure Service Bus JMS-t üzenetek küldésére és fogadására a Service Bus queues
és topics
a .
Az Azure egy Azure Service Bus („Service Bus”) nevű aszinkron üzenetkezelő platformmal rendelkezik, amely az Advanced Message Queueing Protocol 1.0 („AMQP 1.0”) szabványon alapul. A Service Bus számos támogatott Azure-platformon használható.
Az Azure Service Bus JMS-hez készült Spring Boot Starter spring JMS-integrációt biztosít a Service Bushoz.
Az alábbi videó bemutatja, hogyan integrálhatók a Spring JMS-alkalmazások az Azure Service Bus használatával a JMS 2.0 használatával.
Ebben az oktatóanyagban két hitelesítési módszert használunk: a Microsoft Entra-hitelesítést és a közös hozzáférésű jogosultságkódokat (SAS). A Jelszó nélküli lapon a Microsoft Entra-hitelesítés, a Kapcsolati sztring lapon pedig az SAS-hitelesítés látható.
A Microsoft Entra-hitelesítés az Azure Service Bus JMS-hez a Microsoft Entra ID-ban definiált identitások használatával történő csatlakozás mechanizmusa. A Microsoft Entra-hitelesítéssel központi helyen kezelheti az adatbázis felhasználói identitásait és más Microsoft-szolgáltatások, ami leegyszerűsíti az engedélykezelést.
Az SAS-hitelesítés az Azure Service Bus-névtér kapcsolati sztring használja a Service Bus JMS-hez való delegált hozzáféréshez. Ha úgy dönt, hogy hitelesítő adatokként használja a közös hozzáférésű jogosultságkódokat, a kapcsolati sztring önállóan kell kezelnie.
Előfeltételek
Azure-előfizetés – hozzon létre egyet ingyenesen.
A Java Development Kit (JDK) 8- vagy újabb verziója.
Apache Maven, 3.2-es vagy újabb verzió.
Üzenetsor vagy témakör az Azure Service Bushoz. Ha nincs ilyenje, olvassa el Az Azure Portal használata Service Bus-névtér és üzenetsor létrehozásához, vagy Az Azure Portal használata Service Bus-témakör és a témakör előfizetéseinek létrehozásához.
Egy Spring Boot-alkalmazás. Ha nem rendelkezik ilyennel, hozzon létre egy Maven-projektet a Spring Initializrrel. Mindenképpen válassza a Maven Projectet, és a Függőségek csoportban adja hozzá a Spring Web-függőséget, majd válassza a Java 8-es vagy újabb verzióját.
Fontos
Az oktatóanyag lépéseinek elvégzéséhez a Spring Boot 2.5-ös vagy újabb verziójára van szükség.
Üzenetek küldése és fogadása az Azure Service Busból
Az Azure Service Bus üzenetsorával vagy témakörével üzeneteket küldhet és fogadhat a Spring Cloud Azure Service Bus JMS használatával.
A Spring Cloud Azure Service Bus JMS Starter modul telepítéséhez adja hozzá a következő függőségeket a pom.xml fájlhoz:
A Spring Cloud Azure Anyagjegyzéke (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.16.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Feljegyzés
Ha Spring Boot 2.x-et használ, mindenképpen állítsa be a verziót
4.19.0
.spring-cloud-azure-dependencies
Ezt az anyagjegyzéket (BOM) a<dependencyManagement>
pom.xml fájl szakaszában kell konfigurálni. Ez biztosítja, hogy minden Spring Cloud Azure-függőség ugyanazt a verziót használja. A BOM-hez használt verzióról további információt a Spring Cloud Azure melyik verzióját érdemes használni.A Spring Cloud Azure Service Bus JMS Starter összetevő:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId> </dependency>
Az alkalmazás kódolása
Az alábbi lépésekkel konfigurálhatja az alkalmazást, hogy Service Bus-üzenetsort vagy -témakört használjon az üzenetek küldéséhez és fogadásához.
A Service Bus hitelesítő adatainak konfigurálásához adja hozzá az alábbi tulajdonságokat az application.properties fájlhoz .
Feljegyzés
Az Azure Service Bus JMS támogatja a Microsoft Entra ID használatát a Service Bus-erőforrásokra irányuló kérések engedélyezéséhez. A Microsoft Entra ID-val azure-beli szerepköralapú hozzáférés-vezérléssel (Azure RBAC) adhat engedélyeket egy biztonsági tagnak, amely lehet felhasználó vagy alkalmazásszolgáltatás-tag.
Fontos
Mielőtt hozzákezd, győződjön meg arról, hogy hozzárendelte az Azure Service Bus-adattulajdonosi szerepkört a jelenleg használt Microsoft Entra-fiókhoz. További információ: Azure-szerepkörök hozzárendelése a Azure Portal.
spring.jms.servicebus.namespace=<ServiceBusNamespace> spring.jms.servicebus.pricing-tier=<ServiceBusPricingTier> spring.jms.servicebus.passwordless-enabled=true spring.jms.listener.receive-timeout=60000
Az alábbi táblázat a konfiguráció mezőit ismerteti:
Mező Leírás spring.jms.servicebus.namespace
Adja meg a Service Bus-szolgáltatáspéldányban az Azure Portalról beszerzett névteret. spring.jms.servicebus.pricing-tier
Adja meg a service bus tarifacsomagját. A támogatott értékek prémium és standard értékek. A prémium szint a Java Message Service (JMS) 2.0-s verziójával, míg a standard szint a JMS 1.1-et használja az Azure Service Bus használatához. spring.jms.servicebus.passwordless-enabled
Adja meg, hogy jelszó nélküli-e. spring.jms.listener.receive-timeout
Alapértelmezés szerint a fogadási időtúllépés értéke 1000. Javasoljuk, hogy állítsa be a 60000-et Hozzáadás
@EnableJms
a JMS-figyelő jegyzetekkel ellátott végpontjai támogatásának engedélyezéséhez. Üzenetküldésre és@JmsListener
üzenetek fogadására használhatóJmsTemplate
, ahogyan az alábbi példában is látható: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); } }
Cserélje le a
<QueueName>
elemet a Service Bus-névtérben konfigurált üzenetsornévre.Tipp.
Ebben az oktatóanyagban nincsenek hitelesítési műveletek a konfigurációkban vagy a kódban. Az Azure-szolgáltatásokhoz való csatlakozáshoz azonban hitelesítés szükséges. A hitelesítés befejezéséhez az Azure Identity-et kell használnia. A Spring Cloud Azure
DefaultAzureCredential
az Azure Identity-kódtár használatával segít a hitelesítő adatok kódmódosítások nélküli beszerzésében.DefaultAzureCredential
több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust használja futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (például helyi és éles környezetekben) környezetspecifikus kód implementálása nélkül. További információ: DefaultAzureCredential.A helyi fejlesztési környezetekben a hitelesítés befejezéséhez használhatja az Azure CLI-t, a Visual Studio Code-ot, a PowerShellt vagy más módszereket. További információ: Azure-hitelesítés Java-fejlesztési környezetekben. A hitelesítés azure-beli üzemeltetési környezetekben való elvégzéséhez javasoljuk a felhasználó által hozzárendelt felügyelt identitás használatát. További információ: Mik az Azure-erőforrások felügyelt identitásai?
Indítsa el az alkalmazást. Látnia
Sending message
kell ésHello World
közzé kell tennie az alkalmazásnaplóban, ahogy az alábbi példakimenetben látható:Sending message Message received: Hello World
Üzembe helyezés az Azure Spring Appsben
Most, hogy a Spring Boot-alkalmazás helyileg fut, ideje éles környezetbe áthelyezni. Az Azure Spring Apps megkönnyíti a Spring Boot-alkalmazások üzembe helyezését az Azure-ban kódmódosítások nélkül. A szolgáltatás kezeli a Spring-alkalmazások infrastruktúráját, hogy a fejlesztők a kódjukra összpontosíthassanak. Az Azure Spring Apps átfogó monitorozási és diagnosztikai, konfigurációkezelési, szolgáltatásfelderítési, CI/CD-integrációs, kék-zöld környezetek és egyebek használatával biztosítja az életciklus-felügyeletet. Az alkalmazás Azure Spring Appsben való üzembe helyezéséről az első alkalmazás üzembe helyezése az Azure Spring Appsben című témakörben olvashat.