10 Mayıs 2015 Pazar

Weblogic JMS (Java Messaging Services)

Merhaba,
Bugün weblogic'te temel bir konuya değinmek istiyorum: Weblogic JMS.
 WebLogic JMS Messaging

 JMS, en temel tabirle, mesajlaşma üstünden haberleşmeye yarayan bir altyapıdır.
Örneğin abone bilgilerini BTK'ya ileten bir yapınız olsun. BTK gün içinde sistemini kapatırsa, abone bilgileri kayıp mı olacak, gönderemediğinizden ötürü? Tabi ki hayır. Bunu kuyruğunuzda tutmanız ve karşı taraf uygun olduğunda tekrar göndermeniz gerekir. JMS tam da bunun gibi asenkron mesajlaşmalar için uygundur. Düşünün, senkron bir mesajlaşma olsa, her client istekte bulunur ve cevap bekler.

Temelde 2 tip JMS var. Biri point-to-point diğeri topic JMS.

Point-toPoint JMS: 1 Client'ın isteği 1 kez gerçekleşir.


Point-to-Point (PTP) Messaging

Gelen istekler, JMS Queue'dan geçer ve sadece bir application'a ya da server'a iletilir. Bu mesaj locklanır artık. Diğerleri göremez bu mesajı. Mesaj işlendikten sonra da bu mesaj queue'dan silinir.

Topic JMS: 1 Client'ın isteği, tıpkı broadcast yayını gibi, tüm uygulama ya da server'lara iletilir. Mesajın topic'ten silinip silinmemesi ayrı bir sorun teşkil eder. TimetoLive süresi belirlenmezse, sistemi patlatabilirsiniz.

Publish/Subscribe (Pub/Sub) Messaging



Örneğin kampanya bilgisini tutan 50 server'ınız olsun. Bu durumda bu güncellemeyi tüm serverlarda yapmak durumunasınız. Bunun için de topic JMS kullanmanız kaçınılmaz.

JMS ile ilgili değinebilecek çok konu var ama son olarak Persistent Store'a da değinmek istiyorum. JMS Server'ına gelen mesajlar geçici olarak, karşı taraftan mesajın okunduğu/alındığı bilgisi gelene kadar, burada tutulur. Karşı taraf, namı diğer consumer, mesajı çekince ack bilgisi gönderilir ve store'dan silinir. Her bir jms server'a bir adet tahsis edilir. Bu persistent store, file ya da database olabilir. Her ikisinin de avantajı ve dezavantajları var. (Kişisel tercihim file kullanımı)
File persistent store'lar corrupt olabilir. Ancak çok çok hızlıdır. Database persistent store'ları ise, db'de uygun tablolarda yaratılmalı ve db mutlaka high available olmalı.

Kısaca JMS böyle. Daha sonra guaranteed messaging, conn factory, subdeployment gibi konulara da gireriz umarım.

İyi Akşamlar.

Hiç yorum yok: