Merhaba değerli Java dostları . Yeni ve ilk yazı ile karşınızdayım. Bu yazıda JMS API’ ye giriş yapıp birkaç yazıda tamamlamayı düşünüyorum. Umarım çalışmalarınızda yardımcı olur bu çalışmam. Bu yazıda daha çok teorik yani kavramlar üzerinde duracağım.

Mesajlaşma Nedir?

Aklımıza hemen email gelecektir; ama bu API’ nin işlevi farklı. Email kullanıcılar arasında haberleşme sağlarken, JMS API’ deki mesajlaşma yazılım bileşenleri arasında haberleşme sağlar. Böylece yazılım bileşenleri, durumları hakkında bilgi sağlarlar. Peer- to – Peer ilişkisi vardır. Mesaj alınır, iletilir.

JMS API Nedir?

Yukarıda bahsettiğim haberleşmeyi sağlayan API’ dir. Temel iki özellik vardır. Bunlardan ilki asenkronize yapıda olmasıdır. Yani bir mesaj alındığında kullanıcı haberdar edilir ve mesaj alınır. Kullanıcının kendisinin mesajı almak için metot kullanmasına gerek kalmaz. Diğer özellik ise güvenlik ve kontrol mekanizmalarıdır.

Ne Zaman Kullanılır?

Bileşenlerin birbirine sıkı şekilde bağlı olmadığı durumlarda kullanılabilir. Bu tür durumlardan dolayı RMI’ den ayrılır. Bunun yanında tüm bileşenlerin çalışabilirliliğinin önemli olmadığı durumlarda da kullanılabilir.

JMS Mimarisi

Mimari aşağıdaki 5 bileşenden oluşur.

1 – JMS Sağlayıcı(Provider)

JMS arayüzünü uygulayan ve yetkili özellikleri sağlayan bileşen.

2 – JMS İstemci(Client).

Mesaj üreten veya alan bileşen.

3 – Mesaj(Message)

Bilgi taşıyan bileşen.

4 – Yetkili Nesneleri(Administreted Objects)

Önceden ayarlanmış ve istemcilerin kullanımı için oluşturulmuş bileşenler.

5 – Doğal İstemci(Native Client)

JMS API yerine kullanılan API’ dir.

Mesajlaşma Alanları

Mesajlaşma işlemlerinin yapıldığı bir bakıma tekniklerdir. İkiye ayrılır.

1 – PTP(Point – to – Point)

Bir mesaj kuyruğu, gönderici ve alıcı vardır. Zaman bağımlılığı yoktur. Tek hedefli uygulamalarda kullanılır.

2 – Pub – Sub(Publish – Subscribe)

Mesajlar bir başlığa göre gruplandırılır. Yayımlayıcı ve alıcı belli değildir. Tek bir başlıktan birden çok istemciye mesaj dağıtılabilir. Zaman bağımlılığı vardır. Yani istemci mesajları almak için kendini tanıtmalı ve bağlı kalmalıdır.

Mesaj Alım Şekilleri

1 – Senkronize

Alıcı kendi çağıracağı metot ile mesaja ulaşır.

2 – Asenkronize

Bir messageListener kullanılır. Böylece otomatik alım olur. Message Driven Bean bu yöntemi kullanır.

Programlama Modeli

Çeşitli alt başlıkları vardır.

*Yetkili Nesneleri

Hedefler ve ConnectionFactory ayarları bu grupta gösterilebilir. Programlama yöntemleriyle yapılmaları pek tavsiye edilmez.

*ConnectionFactory

İstemcinin sağlayıcı ile bağlantı kurmasını sağlar. Yetkili tarafından sağlanan bir takım ayarların saklanmasını sağlar. QueueConnectionFactory ve TopicConnectionFactory bu gruba girer.

*Hedef(Destination)

İstemcinin haberleştiği hedef nokta.

*Bağlantı(Connection)

TCP/IP soket haberleşmesi üzerinden işlem yapar.

*Oturum(Session)

Mesaj almak ve iletmek üzere oluşturulmuş işlem oturumudur. QueueSession ve TopicSession bu gruba girer.

*Mesaj Üreticisi(Message Producer)

Oturum tarafından oluşturulan ve hedefe mesaj göndermek için oluşturulan nesnedir. QueueSender ve TopicPublisher bu gruba girer.

*Mesaj Alıcısı(Message Consumer)

Mesajları almak için oluşturulan oturum nesnesi tarafından oluşturulan nesnedir. QueueReceiver ve TopicSubscriber bu gruba girer.

*Message Listener

Asenkronize şekilde mesaj almak için kullanılan arayüzdür. Start metodunun çağrılmasından sonra her mesaj geldiğinde onMessage metodu otomatik olarak çalışır.

*Mesaj Filtreleyici(Message Selector)

Belli özellikleri olan mesajlar alınmak istendiğinde kullanılır. Başlığa ve özelliğe göre inceleme yapar.

*Mesaj(Message)

Bilgi içeren kısımdır ve üç parçadan oluşur.

1 – Başlık(Header)

Mesajı kimliklendirmek için çeşitli ön bilgiler içerir. Bazı alanlar ve değer atama yerleri aşağıda görüldüğü gibidir.

JMSDestination                  Send – Publish

JMSDeliveryMode            Send – Publish

JMSExpiration                   Send – Publish

JMSPriority                        Send – Publish

JMSMessageID                  Send – Publish

JMSTimeStamp                 Send – Publish

JMSCorrelationID           Client

JMSReplyTo                      Client

JMSType                             Client

JMSRedelivered              JMS Provider

2 – Özellik(Propety)

Diğer mesajlarla uyumlulukta kullanılabilir. Kullanılması zorunlu değildir.

3 – Gövde(Body)

Kullanılması zorunlu değildir. TextMessage, MapMessage, ByteMessage, StreamMessage, ObjectMessage ve Message tipinde çeşitleri vardır.

JMS serisinin bu ilk kısmında teorik olmak üzere giriş yaptık. Birkaç yazı daha süreceğini tahmin ediyorum:). Sabırla okuduğunuz için teşekkür ederim. Yazının pdf formatını

http://www.javatiryakileri.com/makaleler/JMS_API_Giris_1.pdf

linkinde bulabilirsiniz.

Bol Java’ lı günler dileğiyle…

Categories:

3 Responses

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir