
Pengembang Java, saat menggunakan antarmuka JMS, sering lebih suka bekerja dengan Spring Framework. Spring dapat menyederhanakan pengkodean aplikasi baru dengan menyediakan templat untuk pola umum dan telah berhasil digunakan selama bertahun-tahun dengan kelas MQ JMS. Kelas Spring JmsTemplate adalah antarmuka utama, tetapi masih tergantung pada konfigurasi dan dependensi dalam kode.
Kerangka Kerja Spring mencakup berbagai modul untuk berbagai kebutuhan. Salah satu komponen tersebut adalah Spring Boot. Starter Spring Boot dengan mudah menarik semua dependensi dan pustaka konfigurasi otomatis yang diperlukan untuk menggunakan teknologi tertentu. Ini membuatnya sangat mudah untuk memulai dengan aplikasi dan teknologi baru, lebih cepat daripada bekerja secara langsung dengan kelas-kelas seperti JmsTemplate. Jadi, bagaimana kita bisa memanfaatkan akses mudah ini untuk aplikasi MQ?
Diterjemahkan oleh
@middle_javaTandai e taylorDiposting pada 04/03/2018 / Diperbarui 12/06/2018
11 komentarPada
artikel ini, saya menjelaskan cara mengunduh kelas MQ langsung dari
Maven Central Repository Java. Dan sekarang kita akan menggunakan ini untuk membuat
Spring Boot Starter untuk MQ . Anda dapat mengunduh kode sumber lengkap modul dari
GitHub .
Memulai dengan MQ Spring Boot
Pertama-tama, kita memerlukan manajer antrian berjalan. Kemudian kita akan membuat aplikasi yang mengakses manajer antrian ini.
Memulai manajer antrian dalam sebuah wadah
Untuk memulai dengan cepat, Anda dapat menggunakan wadah
MQ IBM untuk pengembang , yang menjalankan proses server. Ketika wadah ini diluncurkan, beberapa objek dibuat secara default dan definisinya diketahui oleh modul konfigurasi otomatis. Nilai default sesuai dengan nilai yang diperlukan oleh manajer antrian kontainer.
Ini berarti bahwa Anda dapat memulai manajer antrian menggunakan lingkungan Docker dan menghubungkannya tanpa pengaturan tambahan. Anda dapat memulai wadah di Linux menggunakan perintah berikut:
docker run --env LICENSE=accept --env MQ_QMGR_NAME=QM1 \ --publish 1414:1414 \ --publish 9443:9443 \ --detach \ ibmcom/mq
Contoh aplikasi
Ini menggunakan pendekatan yang konsisten dengan model aplikasi JMS di
Panduan Memulai Musim Semi JMS . Saya mengikuti jalur mengimpor proyek ini ke ruang kerja Eclipse dan menggunakan
proses pembangunan
gradle , tetapi proses berbasis
pakar juga bekerja. Sebagai latihan, saya menggunakan konfigurasi pakar dari baris perintah bukannya Eclipse IDE.
Kode yang sama dari contoh berfungsi dengan MQ dengan modifikasi minimal:
- Ubah penyedia pesan sumber dalam daftar ketergantungan untuk menunjukkan paket IBM MQ.
- Ubah nama antrian di Application.java (contoh menggunakan "kotak surat") menjadi "DEV.QUEUE.1" - ini adalah antrian yang ditentukan oleh konfigurasi Pengembang dalam wadah Docker. Jika Anda tidak menggunakan parameter konfigurasi Pengembang default, Anda harus menetapkan nama antrian sama dengan antrian yang ada, atau menentukan antrian baru yang sesuai.
File
build.gradle yang dimodifikasi yang mengontrol kompilasi sekarang memiliki:
dependencies { compile("com.ibm.mq:mq-jms-spring-boot-starter:+") compile("com.fasterxml.jackson.core:jackson-databind") }
Jika Anda lebih suka menggunakan Maven, maka bagian terkait di
pom.xml adalah sebagai berikut:
<dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>com.ibm.mq</groupId> <artifactId>mq-jms-spring-boot-starter</artifactId> <version>0.0.3</version> </dependency> </dependencies>
Satu-satunya perbedaan nyata adalah bahwa versi spesifik dari modul MQ Spring Boot ditentukan dalam konfigurasi Maven.
Konfigurasi default
Nama atribut konfigurasi Boot MQ dimulai dengan awalan ibm.mq. Atribut secara default
ibm.mq.queueManager=QM1 ibm.mq.channel=DEV.ADMIN.SVRCONN ibm.mq.connName=localhost(1414) ibm.mq.user=admin ibm.mq.password=passw0rd
Mereka sesuai dengan nilai default wadah Docker.
Opsi konfigurasi lanjutan
Jika Anda sudah memiliki pengelola antrian MQ yang ingin Anda gunakan, maka Anda dapat dengan mudah mengubah konfigurasi default dengan menentukan nilai yang diganti. Manajer antrian dapat berupa layanan lokal atau bahkan layanan yang dihosting di
IBM Cloud . File
application.properties dalam proyek Java adalah salah satu cara untuk mengeluarkan atribut ini dari proyek. Konfigurasi berlaku tanpa perubahan kode.
Tentukan nama atribut manajer antrian:
ibm.mq.queueManager=QM1
Untuk koneksi klien ke manajer antrian, Anda juga harus mengatur
ibm.mq.channel ibm.mq.connName
Jika saluran atau connName tidak ditentukan, diasumsikan bahwa manajer antrian lokal digunakan. Komponen konfigurasi juga mendukung beberapa atribut terkait TLS. Mereka dijelaskan secara lebih rinci dalam file README, tetapi nilai defaultnya adalah nol. Anda mungkin juga perlu menginstal
ibm.mq.user ibm.mq.password=passw0rd
untuk mengganti nilai default. Atribut ini dapat dibiarkan kosong untuk menggunakan userid lokal dari sistem operasi tanpa otentikasi, jika diizinkan oleh manajer antrian.
Contoh konten file
application.properties :
ibm.mq.queueManager=QM1 ibm.mq.channel=SYSTEM.DEF.SVRCONN ibm.mq.connName=server.example.com(1414) ibm.mq.user=user1 ibm.mq.password=passw0rd
Setelah itu, Spring Boot akan membuat ConnectionFactory yang dapat digunakan untuk berinteraksi dengan manajer antrian.
Menguji program sampel
Anda dapat menjalankan program sampel menggunakan
gradle bootRun
. Atau menggunakan maven, jalankan
mvn package
dan kemudian
java -jar ./target/gs-messaging-jms.jar
untuk menjalankan program. Anda harus melihat yang berikut ini:

Di sini Anda dapat melihat bagaimana aplikasi meletakkan pesan ("mengirim pesan email"), dan kemudian mengambilnya.
Kesimpulan
Menggunakan Spring Boot Starter dengan MQ memungkinkan Anda untuk memulai dengan sangat cepat. Kemudian, setelah meluncurkan aplikasi pertama Anda, Anda dapat mengembangkannya untuk menggunakan fitur MQ lainnya. Setelah Anda mencobanya, Anda dapat memberikan umpan balik di sini atau di halaman
masalah GitHub .
Pembaruan - Juni 2018
Awal tahun ini, pembaruan utama untuk Spring Boot Framework, yang dikenal sebagai Boot 2., dirilis. MQ Boot Starter telah diperbarui untuk bekerja dengan versi baru platform ini. Tentu saja, semua versi yang dirilis untuk umum dari kode ini tersedia di
Maven Central Repository . Untuk kompatibilitas dengan Spring Boot 1, Anda harus terus menggunakan
versi 0.0.4 artefak ini;
versi 2.0.0 kompatibel dengan Boot 2 dan akan digunakan sebagai dasar untuk pembaruan di masa mendatang.
Menandai
jms ,
mq ,
mqseries ,
spring ,
spring bootpenulis
Mark E Taylor11 komentar pada artikel "Mengembangkan aplikasi MQ JMS di Spring Boot"
(Hanya komentar dan komentar bermanfaat dengan jawaban diterjemahkan)3.
Horacio 16 Mei 2019
Mark, kerja bagus.
Bisakah saya menangani lebih dari satu antrian?
Saya melihat bahwa awalan di-hardcode dalam @ConfigurationProperties (prefix = "bm.mq")
o Mark E Taylor 17 Mei 2019
Saya benar-benar tidak mengerti pertanyaannya. "Awalan" mengacu pada atribut konfigurasi yang pada dasarnya menunjukkan cara terhubung ke manajer antrian. Ini tidak ada hubungannya dengan antrian yang digunakan aplikasi setelah menghubungkan. Jika Anda benar-benar ingin bertanya tentang menghubungkan ke beberapa manajer antrian, lihat
github.com/ibm-messaging/mq-jms-spring/issues/7 untuk melihat pendekatan mana yang digunakan orang.
7.
Peter 17 Mei 2018
"Hello.Application" tidak ada, apakah file-file tersebut terletak di github?
o Mark E Taylor 12 Juni 2018
Untuk mengekstrak dan mengimpor aplikasi sampel, saya menggunakan halaman Spring Getting Started (lihat
spring.io/guides/gs/messaging-jms ), dan kemudian membuat perubahan kecil. Karena berbagai alasan, saya sengaja tidak ingin memiliki salinan terpisah dari kode ini di sini.
Diterjemahkan oleh
@middle_java .