
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 .