Mengambil Pesan dari JMS Server

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.
result consume message netbeans

Adapun dari sisi JMS servernya apabila kita lakukan monitoring maka hasilnya akan tampak seperti pada gambar berikut.
jms server after consume

Pada saat kita melihat isi pesan dengan menekan tombol Show Messages maka hasilnya akan tampak seperti gambar berikut.
message in JMS Server after consume

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.




Leave a Reply