Friday, April 17, 2009

JMS Flashback

Hari ini coba-coba membaca kembali tentang JMS karena gak nyangkut-nyangkut saat googling Fuzzy Logic hahaha, cuman sekedar catatan saja buat pengingat kalau-kalau suatu hari nanti dibutuhkan.

Java Messaging Service (JMS) adalah teknologi Java yang digunakan untuk memroses asynchronous message. Ada dua mode yang digunakan yaitu point-to-point dan publish/subscribe. Pada mode point-to-point, producer mengirim message ke queue. Message yang dikirim hanya dibaca sekali oleh sebuah consumer. Setelah sebuah consumer membacanya, message dihapus dari queue. Ringkasnya, satu message = satu consumer. Consumer tidak harus sedang aktif saat message dikirim oleh producer.

Pada mode publish/subscribe, producer mengirim message ke sebuah topic di mana satu atau lebih consumer telah melakukan registrasi atau subscribe ke topic tersebut. Message akan tetap ada di topic tersebut sampai seluruh consumer yang telah subscribe membacanya. Jika consumer belum teregistrasi saat message dikirim maka consumer tidak bisa membaca message tersebut. Untuk membaca message dari sebuah topic, consumer harus aktif. JMS mengatasi hal ini dengan mengijinkan client untuk membuat durable subscription. Durable subscription dapat menerima message saat consumer tidak aktif (mirip queue) .

JMS tidak menjamin message yang diterima consumer berada pada urutan yang sesuai waktu dikirim producer. Ada dua macam tipe consumer. Synchronous dan Asynchronous consumer.

Synchronous consumer membaca message dari destination jika message ada di destination. Jika tidak ada message di destination maka consumer akan tetap looping selama limit waktunya belum tercapai menggunakan method MessageConsumer.receive(). Jika diberi parameter 0 maka akan menjadi limit tak berhingga a.k.a hidup selamanya.

Sedangkan Asynchronous consumer membaca message dari destination menggunakan MessageListener. MessageListener diregistrasikan pada MessageConsumer melalui method MessageConsumer.setMessageListener(MessageListener). MessageListener ini mirip event listener dimana jika message ada di destination maka JMS akan mengirim message dengan memanggil method onMessage pada listener.

Terminologi synchronous dan asynchronous consumer hanya berhubungan dengan cara sebuah consumer mengambil message, bukan cara JMS mengirim message. JMS mengirim message sesuai queue/topic seperti dijelaskan sebelumnya.

0 comments:

 

©2009 Stay the Same | by TNB