Tulisan ini merupakan tindak-lanjut dari tulisan saya sebelumnya yaitu Mengirim Pesan ke JMS Server. Karena konyol rasanya jika kita sudah berhasil mengirimkan pesan tapi tidak bisa menngambil isi pesan dari JMS Server. Pada proses mengambil pesan (consume message) prinsip kerjanya sama dengan saat kita akan mengirimkan pesan, yaitu:
- Membuat objek InitialContext berdasarkan JMS Server yang akan kita akses.
- Membuat object ConnectionFactory untuk queue yang akan kita akses.
- Membuat object QueueConnection berdasarkan ConnectionFactory yang sudah kita buat.
- Membuat object QueueSession.
- Membuat lookup Queue yang akan kita baca berdasarkan InitialContext yang sudah kita definisikan.
- Membuat QueueReceiver untuk kemudian sambungkan koneksi ke queue.
- Terima pesan untuk kemudian tutup koneksi queueConnection.
Semua langkah-langkah diatas jika ditulis dalam bahasa pemrograman java maka akan tampak seperti pada source code berikut
package id.web.herpur.jms; import java.util.Properties; import javax.jms.*; import javax.naming.Context; import javax.naming.InitialContext; /** * * @author hape */ public class PenerimaMain { public static void main(String[] args) { try { Properties props = new Properties(); props.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); props.put(Context.PROVIDER_URL, "t3://localhost:8001"); props.put(Context.SECURITY_PRINCIPAL, "weblogic"); props.put(Context.SECURITY_CREDENTIALS, "weblogic"); // init initialContext InitialContext context = new InitialContext(props); // lookup QueueConnectionFactory QueueConnectionFactory queueFactory = (QueueConnectionFactory) context.lookup("jms/HelloWorldConnectionFactory"); // create a queue connection QueueConnection queueConnection = queueFactory.createQueueConnection(); // create a queue session QueueSession queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); // lookup queue Queue queue = (Queue) context.lookup("jms/HelloWorldQueue"); // create a queue receiver QueueReceiver queueReceiver = queueSession.createReceiver(queue); // start connection to queue queueConnection.start(); // create a simple message TextMessage message = (TextMessage) queueReceiver.receive(); // print message System.out.println("Message Result: " + message.getText()); // close the queue connection queueConnection.close(); System.out.println("==== Done ===="); } catch (Exception ex) { ex.printStackTrace(); } } }
Untuk mengetahui proses consume message dari JMS Server maka kita dapat segera meng-eksekusi file java diatas, tentunya setelah server JMS-nya aktif (menyala). Pada saat dieksekusi maka hasil dari program diatas bisa dilihat pada gambar berikut.
Adapun dari sisi JMS servernya apabila kita lakukan monitoring maka hasilnya akan tampak seperti pada gambar berikut.
Pada saat kita melihat isi pesan dengan menekan tombol Show Messages maka hasilnya akan tampak seperti gambar berikut.
Dari gambar tampak bahwa message sudah kosong karena sudah di-consume oleh program yang kita buat diatas. Demikian percobaan ini saya buat, semoga bisa membantu.