Merhaba Değerli Java Dostları,
JMS API’ ye ilk yazının ardından kaldığımız yerden devam ediyoruz. Yine teorik ağırlıklı bir yazı olacak. Bundan sonraki yazıda örnekle karşınızda olmayı planlıyorum. Yazının pdf formatını buradan indirebilirsiniz. Kaldığımız yerden devam edelim.
Her uygulamada amaçlanan hedeflerden biri de sağlam uygulamalar oluşturmaktır. Peki söz konusu JMS olunca neler yapabiliriz ? İşte bazı yöntemler.
Mesaj Bilgilendirmesinin Kontrol Edilmesi: Bir mesaj iletildiğine dair cevap belirtmedikçe iletilmiş sayılmaz. Başarılı bir mesaj için de üç adım gereklidir. İstemciye mesaj iletilir, işlenir ve bilgi verilir. Bu bilgilendirme duruma göre istemci ya da sağlayıcı tarafından yapılır. Transacted oturumlarda bilgilendirme transaction, commit edildiğinde yapılır. Rollback yapılırsa mesajlar iade edilir. Nontransacted oturumlarda bilgilendirme üç farklı değere göre yapılır. Bunlardan ilki Session.AUTO_ACKNOWLEDGE değeridir. Bu değerde mesaj alındığında bilgilendirme sağlanır. Diğer değer Session.CLIENT_ACKNOWLEDGE değeridir. Bilgilendirme acknowledge metodu yardımı ile olur. Son değer ise Session.DUPS_OK_ACKNOWLEDGE’ dir. Bu değerde bilgilendirme geç yapılır. İki defa mesaj almaya imkan veren uygulamalarda kullanılabilir.
Mesaj Kalıcılığı: Hatalı bir çalışma durumunda ne tür iletim yapılacağı iki yolla belirlenir. Bu değerler Delivery arayüzünün alanlarıdır. İlk değer PERSISTENT değeridir. Hata durumunda mesaj kaybolmaz, saklanır. Diğer yöntem ise NON_PRESISTENT değeridir. Tahmin ettiğiniz gibi tam tersi bir durum söz konusudur. Mesaj saklanmaz.
Öncelik Seviyeleri: Tıpkı thread işlemlerinde olduğu gibi mesaj işlemlerinde de öncelik değeri verilebilir. Değer aralığı 0 – 9′ dur. 0 en düşük, 9 ise en yüksek değerdir. Varsayılan değer 4′ tür. Yüksek öncelikli mesajlar önce iletilmeye çalışılır; ama bu konuda garanti verilemez.
Mesaj Geçerliliği: Varsayılan değer olarak bir mesaj geçerliliğini yitirmez. Eğer belli bir süre sonra mesajın geçerliliğini yitirmesi isteniyorsa setTimeToLive metodu ile ya da mesajı gönderirken ms cinsinden değer verilerek bu ayar sağlanmış olunur.
Geçici Hedef Oluşturmak: Norma hedefler dışında geçici hedefler de oluşturulabilir. Oluşturuldukları oturum süresince geçerli olurlar. Bağlantı kapatılırsa açtıkları geçici hedefler de kapanır ve içerikleri kaybolur.
JMS API İçin Bazı Yöntemler: ConnectionFactory, destination gibi bileşenlerin değerleri JNDI yöntemleri kullanılarak aranmalıdır. Böylece daha otomatik yapı sağlanır. Ayrıca bağlantı açma gibi sadece bir defa yapılacak işlemlerin ejbCreate gibi yine başlangıçta ve bir defa çağrılan metotlarda kodlanması önerilmektedir. Buna benzer olarak bağlantı kapatma gibi olaylar ejbRemove, ejbPassivate gibi metotlarda tanımlanmalıdır. Ayrıca MDB(Message Driven Bean) kullanılması da diğer önerilen bir yöntemdir. Bunlar zorunlu olmamakla beraber, birkaç teknik ipucu, muhtemelen işinizi daha da kolaylaştırdığını sizde göreceksiniz.
Bol Java’ lı günler dileğiyle…
Yazan: Faruk BOZAN (Yazılım Mimarı / Software Architect)