Pengembangan aplikasi MQ JMS di Spring Boot



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_java

Tandai e taylor
Diposting pada 04/03/2018 / Diperbarui 12/06/2018
11 komentar

Pada 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 boot

penulis Mark E Taylor

11 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 .

Source: https://habr.com/ru/post/id479232/


All Articles