Menggunakan JMS di Spring untuk mengakses Azure Bus Layanan
Tutorial ini menunjukkan cara menggunakan Spring Boot Starter untuk Azure Bus Layanan JMS untuk mengirim pesan ke dan menerima pesan dari Bus Layanan queues
dan topics
.
Azure menyediakan platform perpesanan asinkron yang disebut Azure Bus Layanan ("Bus Layanan") yang didasarkan pada standar Advanced Message Queueing Protocol 1.0 ("AMQP 1.0"). Anda dapat menggunakan Bus Layanan di berbagai platform Azure yang didukung.
Spring Boot Starter untuk Azure Service Bus JMS menyediakan integrasi Spring JMS dengan Azure Service Bus.
Video berikut menjelaskan cara mengintegrasikan aplikasi Spring JMS dengan Azure Service Bus menggunakan JMS 2.0.
Dalam tutorial ini, kami menyertakan dua metode autentikasi: autentikasi Microsoft Entra dan autentikasi Tanda Tangan Akses Bersama (SAS). Tab Tanpa Kata Sandi memperlihatkan autentikasi Microsoft Entra dan tab string Koneksi ion memperlihatkan autentikasi SAS.
Autentikasi Microsoft Entra adalah mekanisme untuk menyambungkan ke Azure Bus Layanan JMS menggunakan identitas yang ditentukan dalam ID Microsoft Entra. Dengan autentikasi Microsoft Entra, Anda dapat mengelola identitas pengguna database dan layanan Microsoft lain di lokasi pusat, yang menyederhanakan manajemen izin.
Autentikasi SAS menggunakan string koneksi namespace Azure Bus Layanan Anda untuk akses yang didelegasikan ke Bus Layanan JMS. Jika Anda memilih untuk menggunakan Tanda Tangan Akses Bersama sebagai kredensial, Anda perlu mengelola string koneksi sendiri.
Prasyarat
Langganan Azure - membuat secara gratis.
Java Development Kit (JDK) versi 8 atau yang lebih tinggi.
Apache Maven, versi 3.2 atau lebih tinggi.
Antrean atau topik untuk Azure Bus Layanan. Jika Anda tidak memilikinya, lihat Menggunakan portal Azure untuk membuat namespace Bus Layanan dan antrean atau Menggunakan portal Azure untuk membuat topik Bus Layanan dan langganan topik tersebut.
Aplikasi Spring Boot. Jika Anda tidak memilikinya, buat proyek Maven dengan Spring Initializr. Pastikan untuk memilih Proyek Maven dan, di bawah Dependensi, tambahkan dependensi Spring Web , lalu pilih Java versi 8 atau yang lebih tinggi.
Penting
Spring Boot versi 2.5 atau yang lebih tinggi diperlukan untuk menyelesaikan langkah-langkah dalam tutorial ini.
Mengirim dan menerima pesan dari Azure Bus Layanan
Dengan antrean atau topik untuk Azure Bus Layanan, Anda dapat mengirim dan menerima pesan menggunakan Spring Cloud Azure Bus Layanan JMS.
Untuk menginstal modul Spring Cloud Azure Bus Layanan JMS Starter, tambahkan dependensi berikut ke file pom.xml Anda:
Spring Cloud Azure Bill of Materials (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.12.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Catatan
Jika Anda menggunakan Spring Boot 2.x, pastikan untuk mengatur versi ke
spring-cloud-azure-dependencies
4.18.0
. Bill of Material (BOM) ini harus dikonfigurasi di bagian<dependencyManagement>
file pom.xml Anda. Ini memastikan bahwa semua dependensi Spring Cloud Azure menggunakan versi yang sama. Untuk informasi selengkapnya tentang versi yang digunakan untuk BOM ini, lihat Versi Spring Cloud Azure mana yang Harus Saya Gunakan.Artefak Spring Cloud Azure Bus Layanan JMS Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId> </dependency>
Kodekan aplikasi
Gunakan langkah-langkah berikut untuk mengonfigurasi aplikasi Anda untuk menggunakan antrean atau topik Bus Layanan untuk mengirim dan menerima pesan.
Konfigurasikan kredensial Bus Layanan dengan menambahkan properti berikut ke file application.properties Anda.
Catatan
Azure Bus Layanan JMS mendukung penggunaan MICROSOFT Entra ID untuk mengotorisasi permintaan ke sumber daya Bus Layanan. Dengan MICROSOFT Entra ID, Anda dapat menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memberikan izin kepada prinsip keamanan, yang mungkin merupakan pengguna atau perwakilan layanan aplikasi.
Penting
Sebelum memulai, pastikan Anda telah menetapkan peran Pemilik Data Azure Bus Layanan ke akun Microsoft Entra yang saat ini Anda gunakan. Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan portal Microsoft Azure.
spring.jms.servicebus.namespace=<ServiceBusNamespace> spring.jms.servicebus.pricing-tier=<ServiceBusPricingTier> spring.jms.servicebus.passwordless-enabled=true spring.jms.listener.receive-timeout=60000
Tabel berikut ini menjelaskan bidang dalam konfigurasi:
Bidang Deskripsi spring.jms.servicebus.namespace
Tentukan namespace yang Anda peroleh di instans layanan Bus Layanan Anda dari portal Azure. spring.jms.servicebus.pricing-tier
Tentukan tingkat harga bus layanan Anda. Nilai yang didukung adalah premium dan standar. Tingkat premium menggunakan Java Message Service (JMS) 2.0, sementara tingkat standar menggunakan JMS 1.1 untuk berinteraksi dengan Azure Bus Layanan. spring.jms.servicebus.passwordless-enabled
Tentukan apakah akan menggunakan tanpa kata sandi. spring.jms.listener.receive-timeout
Secara default, nilai batas waktu penerimaan adalah 1000. Kami menyarankan agar Anda mengaturnya ke 60000 Tambahkan
@EnableJms
untuk mengaktifkan dukungan untuk titik akhir yang dianotasi pendengar JMS. GunakanJmsTemplate
untuk mengirim pesan dan@JmsListener
menerima pesan, seperti yang ditunjukkan dalam contoh berikut: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); } }
Ganti
<QueueName>
dengan nama antrean Anda sendiri yang dikonfigurasi di namespace layanan Azure Service Bus Anda.Tip
Dalam tutorial ini, tidak ada operasi autentikasi dalam konfigurasi atau kode. Namun, menyambungkan ke layanan Azure memerlukan autentikasi. Untuk menyelesaikan autentikasi, Anda perlu menggunakan Azure Identity. Spring Cloud Azure menggunakan
DefaultAzureCredential
, yang disediakan pustaka Azure Identity untuk membantu Anda mendapatkan kredensial tanpa perubahan kode apa pun.DefaultAzureCredential
mendukung beberapa metode autentikasi dan menentukan metode mana yang akan digunakan saat runtime. Pendekatan ini memungkinkan aplikasi Anda menggunakan metode autentikasi yang berbeda di lingkungan yang berbeda (seperti lingkungan lokal dan produksi) tanpa menerapkan kode khusus lingkungan. Untuk informasi selengkapnya, lihat DefaultAzureCredential.Untuk menyelesaikan autentikasi di lingkungan pengembangan lokal, Anda dapat menggunakan Azure CLI, Visual Studio Code, PowerShell, atau metode lainnya. Untuk informasi selengkapnya, lihat Autentikasi Azure di lingkungan pengembangan Java. Untuk menyelesaikan autentikasi di lingkungan hosting Azure, sebaiknya gunakan identitas terkelola yang ditetapkan pengguna. Untuk informasi selengkapnya, lihat Apa yang dimaksud dengan identitas terkelola untuk sumber daya Azure?
Mulai aplikasi. Anda akan melihat
Sending message
danHello World
memposting ke log aplikasi Anda, seperti yang ditunjukkan dalam contoh output berikut:Sending message Message received: Hello World
Sebarkan ke Azure Spring Apps
Sekarang setelah Anda memiliki aplikasi Spring Boot yang berjalan secara lokal, saatnya untuk memindahkannya ke produksi. Azure Spring Apps memudahkan penyebaran aplikasi Spring Boot ke Azure tanpa perubahan kode apa pun. Layanan ini mengelola infrastruktur aplikasi Spring sehingga pengembang dapat fokus pada kode mereka. Azure Spring Apps menyediakan manajemen siklus hidup menggunakan pemantauan dan diagnostik yang komprehensif, manajemen konfigurasi, penemuan layanan, integrasi CI/CD, penyebaran biru-hijau, dan banyak lagi. Untuk menyebarkan aplikasi Anda ke Azure Spring Apps, lihat Menyebarkan aplikasi pertama Anda ke Azure Spring Apps.
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk