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
- 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.
- 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.

Ç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.
- Noktadan Noktaya İleti Sistemi
- Yayınlama/abone olma ileti alışverişi
| 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.
- 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.
- ConnectionFactory
- KuyrukConnectionFactory
- TopicConnectionFactory
- Kuyruk
- Konu
- XAConnectionFactory
- XAQueueConnectionFactory
- XATopicConnectionFactory