JMS modeli

The JMS model defines a set of interfaces that Java applications can use to perform messaging operations. IBM® MQ classes for JMS, JMS sağlayıcısı olarak, JMS nesnelerinin IBM MQ kavramlarına nasıl ilişkin olduğunu tanımlar. JMS belirtimi, belirli JMS nesnelerinin yönetilecek nesneler olmasını bekler.

The JMS specification and the javax.jms package define a set of interfaces that Java applications can use to perform messaging operations.

From IBM MQ 8.0, the product supports the JMS 2.0 version of the JMS standard, which introduces a simplified API, while also retaining the classic API, from JMS 1.1.

Basitleştirilmiş API

JMS 2.0 introduces the simplified API, while also retaining the domain specific and domain independent interfaces from JMS 1.1. Basitleştirilmiş API, ileti göndermek ve almak için gerekli olan nesnelerin sayısını azaltır ve aşağıdaki arabirimlerden oluşur:
ConnectionFactory
A ConnectionFactory is an administered object that is used by a JMS client to create a Connection. Bu arabirim, klasik API ' da da kullanılır.
JMSBağlamı
Bu nesne, klasik API ' nin Connection ve Session nesnelerini birleştirir. JMSBağlam nesneleri, diğer JMSBağlam nesnelerinden yaratılabilir ve temeldeki bağlantı yinelenir.
JMSÜretici
Bir JMSüreticisi bir JMSBağlamı tarafından yaratılır ve bir kuyruğa ya da konuya ileti göndermek için kullanılır. JMSüretici nesnesi, iletiyi göndermek için gereken nesnelerin yaratılmasına neden olur.
JMSTüketici
JMSTüketici bir JMSBağlamı tarafından oluşturulur ve bir konu ya da kuyruktan ileti almak için kullanılır.
Basitleştirilmiş API ' nin bir dizi etkisi vardır:
  • JMSBağlam nesnesi her zaman temel bağlantıyı otomatik olarak başlatır.
  • JMSProducers and JMSConsumers can now work directly with message bodies, without having to get the whole message object, by using the Message's getBody method.
  • Bir 'body' göndermeden önce, bir 'body' göndermeden önce, JMSüretici nesnesi üzerinde ileti özellikleri ayarlanabilir. JMSüreticisi, iletiyi göndermek için gerekli olan tüm nesnelerin yaratılmasını işleyecek. JMS 2.0komutunu kullanarak, özellikler ayarlanabilir ve aşağıdaki gibi gönderilen bir ileti kullanılabilir:
    
    context.createProducer().
    setProperty("foo", "bar").
    setTimeToLive(10000).
    setDeliveryMode(NON_PERSISTENT).
    setDisableMessageTimestamp(true).
    send(dataQueue, body);
    

JMS 2.0 , iletilerin birden çok tüketici arasında paylaşılabildiği paylaşımlı abonelikler de sunar. Tüm JMS 1.1 abonelikleri paylaşılmayan abonelikler olarak ele alınır.

Klasik API

Aşağıdaki liste, klasik API ' nin ana JMS arabirimlerini özetlemektedir:
Hedef
Bir hedef, bir uygulamanın iletileri gönderdiği ya da bir uygulamanın iletileri aldığı bir kaynaktır ya da her ikisi de olabilir.
ConnectionFactory
Bir ConnectionFactory nesnesi, bir bağlantı için bir yapılandırma özellikleri kümesini sarsalıyor. Bir uygulama, bağlantı oluşturmak için bir bağlantı üreticisi kullanır.
Bağlantı
Bir bağlantı nesnesi, bir uygulamanın ileti sistemi ile etkin bağlantısını sarsalıyor. Uygulama, oturum yaratmak için bir bağlantı kullanır.
Oturum
Oturum, ileti göndermek ve almak için tek bir iş parçacıklı bağlamdır. Bir uygulama, ileti, ileti üreticileri ve ileti tüketicileri oluşturmak için bir oturumu kullanır. Bir oturum hareket edilir ya da hareket edilmez.
İleti
Bir ileti nesnesi, bir uygulamanın gönderdiği ya da gönderdiği bir iletiyi sarsalıyor.
İletiÜreticisi
Bir uygulama, iletileri bir hedefe göndermek için bir ileti üreticiyi kullanır.
İletiTüketici
Bir uygulama, bir hedefe gönderilen iletileri almak için bir ileti tüketicisi kullanır.
Şekil 1 , bu nesneleri ve bunların ilişkilerini gösterir.
Şekil 1. JMS nesneleri ve ilişkileri
Bu çizge, çevresindeki metinle açıklanmıştır.

Çizge ana arabirimleri, ConnectionFactory, Connection, Session, MessageProducer, MessageConsumer, Message ve Destination arabirimlerini gösterir. Uygulama, bağlantı yaratmak için bir bağlantı üreticisi kullanır ve oturum yaratmak için bir bağlantı kullanır. Daha sonra, uygulama, ileti, ileti üreticileri ve ileti tüketicileri oluşturmak için bir oturumu kullanabilir. Uygulama, bir hedefe ileti göndermek için bir ileti üreticisi kullanır ve bir hedefe gönderilen iletileri almak için bir ileti tüketicisi kullanır.

Bir Hedef, ConnectionFactory ya da Connection nesnesi, çok iş parçacıklı bir uygulamanın farklı iş parçacıkları tarafından eşzamanlı olarak kullanılabilir, ancak bir Oturum, MessageProducer ya da MessageConsumer nesnesi farklı iş parçacıkları tarafından eşzamanlı olarak kullanılamaz. Bir Oturum, MessageProducer ya da MessageConsumer nesnesinin koşutzamanlı olarak kullanılmamasını sağlamanın en basit yolu, her iş parçacığı için ayrı bir Oturum nesnesi yaratmamaktadır.

JMS , iki ileti sistemini destekler:
  • Noktadan Noktaya İleti Sistemi
  • Yayınlama/abone olma ileti alışverişi
Bu ileti alışverişi biçemleri de ileti sistemi etki alanlarıolarak da adlandırılır ve her iki ileti sistemi stilini de bir uygulamada birleştirebilirsiniz. Noktadan noktaya iletişim alanında, hedef bir kuyruktır ve yayınlama/abone olma etki alanında, hedef bir konudur.
JMS 1.1tarihinden önce JMS sürümleriyle, noktadan noktaya iletişim etki alanı için programlama bir arabirim ve yöntem kümesini kullanır ve yayınlama/abone olma etki alanı için programlama başka bir küme kullanır. İki set birbirine benzer, ama ayrı. JMS 1.1' tan, hem ileti sistemi etki alanlarını destekleyen, ortak bir arabirim ve yöntem kümesi kullanabilirsiniz. Ortak arabirimler, her ileti sistemi etki alanı için bir etki alanı bağımsız görünümü sağlar. Tablo 1 , JMS etki alanı bağımsız arabirimlerini ve bunlara karşılık gelen etki alanı özel arabirimlerini listeler.
Tablo 1. JMS etki alanı bağımsız ve bunlara karşılık gelen etki alanına özgü arabirimler
Etki alanı bağımsız arabirimleri Noktadan noktaya etki alanına ilişkin etki alanına özgü arabirimler Yayınlama/abone olma etki alanı için etki alanına özgü arabirimler
ConnectionFactory KuyrukConnectionFactory TopicConnectionFactory
Bağlantı KuyrukBağlantısı TopicConnection
Hedef Kuyruk Konu
Oturum KuyrukOturumu Konu Oturumu
İletiÜreticisi KuyrukGönderen Konu Yayınlayıcı
İletiTüketici
QueueReceiver
QueueBrowser
Konu Abonesi

JMS 2.0 , etki alanına özgü tüm arabirimleri korur ve bu nedenle var olan uygulamalar bu arabirimleri kullanmaya devam edebilir. For new applications, however, consider using the domain independent interfaces of JMS 1.1 or the simplified API of JMS 2.0.

IBM MQ classes for JMSiçinde, JMS nesneleri IBM MQ kavramlarına aşağıdaki şekillerde ilgilidir:
  • Bağlantı nesnesinin, bağlantıyı yaratmak için kullanılan bağlantı üreticisinin özelliklerinden türetilmiş özellikleri vardır. Bu özellikler, bir uygulamanın kuyruk yöneticisine nasıl bağlanacağını denetler. Bu özelliklere örnek olarak, kuyruk yöneticisinin adı ve istemci kipinde kuyruk yöneticisine bağlanan bir uygulama için, kuyruk yöneticisinin çalıştığı sistemin anasistem adı ya da IP adresi.
  • Bir oturum nesnesi, oturumun işlem kapsamını tanımlayan bir IBM MQ bağlantı tanıtıcısını sarmadır.
  • Bir MessageProducer nesnesi ve her biri bir IBM MQ nesne tanıtıcısını sarmalayan bir MessageConsumer nesnesi.

When using IBM MQ classes for JMS, all the normal rules of IBM MQ apply. Özellikle, bir uygulamanın uzak bir kuyruğa ileti gönderebileceği, ancak yalnızca, uygulamanın bağlı olduğu kuyruk yöneticisinin sahip olduğu bir kuyruktan bir ileti alabileceği unutulmamalı.

JMS belirtimi, ConnectionFactory ve Destination nesnelerinin nesneleri yönetmesini bekler. Bir denetimci, denetlenen nesneleri merkezi bir havuzda yaratır ve bakımını yapar; JMS uygulaması bu nesneleri Java Naming and Directory Interface (JNDI) kullanarak alır.

IBM MQ classes for JMS' ta, Hedef arabirimin somutlaması, Kuyruk ve Konu 'nın soyut bir üst sınıfıdır; dolayısıyla, Hedef eşgörünümü bir Kuyruk nesnesi ya da Konu nesnesidir. Etki alanı bağımsız arabirimleri, bir kuyruğu ya da konuyu hedef olarak kabul eder. Bir MessageProducer ya da MessageConsumer nesnesi için ileti alışverişi etki alanı, hedefin bir kuyruk mu, yoksa bir konu mı tarafından belirleniyor.

Bu nedenle, IBM MQ classes for JMS içinde aşağıdaki tiplerin nesneleri denetleyebilirler:
  • ConnectionFactory
  • KuyrukConnectionFactory
  • TopicConnectionFactory
  • Kuyruk
  • Konu
  • XAConnectionFactory
  • XAQueueConnectionFactory
  • XATopicConnectionFactory