JMS

3 篇文章 0 订阅

(https://en.wikipedia.org/wiki/Java_Message_Service)


Java Message Service

From Wikipedia, the free encyclopedia

The Java Message Service (JMSAPI is a Java Message Oriented Middleware (MOM) API[1] for sending messages between two or more clients. It is an implementation to handle the Producer-consumer problem. JMS is a part of the Java Platform, Enterprise Edition, and is defined by a specification developed under the Java Community Process as JSR 914.[2] It is a messaging standard that allows application components based on the Java Enterprise Edition (Java EE) to create, send, receive, and read messages. It allows the communication between different components of a distributed application to be loosely coupled, reliable, and asynchronous.[3]

General idea of messaging

Messaging is a form of  loosely coupled distributed communication, where in this context the term 'communication' can be understood as an exchange of messages between software components. Message-oriented technologies attempt to relax  tightly coupledcommunication (such as  TCP network  socketsCORBA or  RMI) by the introduction of an intermediary component. This approach allows software components to communicate 'indirectly' with each other. Benefits of this include message senders not needing to have precise knowledge of their receivers.

The advantages of messaging include the ability to integrate heterogeneous platforms, reduce system bottlenecks, increase scalability, and respond more quickly to change.[4]

Version history

  • JMS 1.0.2b (June 26, 2001)
  • JMS 1.1 (April 12, 2002)
  • JMS 2.0 (May 21, 2013)

JMS 2.0 is maintained under the Java Community Process as JSR 343.


Elements

The following are JMS elements:[3]

JMS provider
An implementation of the JMS interface for a  Message Oriented Middleware (MOM). Providers are implemented as either a Java JMS implementation or an adapter to a non-Java MOM.
JMS client
An application or process that produces and/or receives messages.
JMS producer/publisher
A JMS client that creates and sends messages.
JMS consumer/subscriber
A JMS client that receives messages.
JMS message
An object that contains the data being transferred between JMS clients.
JMS queue
A staging area that contains messages that have been sent and are waiting to be read (by only one consumer). Contrary to what the name  queue suggests, messages don't have to be received in the order in which they were sent. A JMS queue only guarantees that each message is processed only once.
JMS topic
A distribution mechanism for publishing messages that are delivered to multiple subscribers.

Models

The JMS API supports two models:

Point-to-point model

In the point-to-point messaging system, messages are routed to an individual consumer which maintains a queue of "incoming" messages. This messaging type is built on the concept of message queues, senders, and receivers. Each message is addressed to a specific queue, and the receiving clients extract messages from the queues established to hold their messages. While any number of producers can send messages to the queue, each message is guaranteed to be delivered, and consumed by one consumer. Queues retain all messages sent to them until the messages are consumed or until the messages expire. If no consumers are registered to consume the messages, the queue holds them until a consumer registers to consume them.

Publish/subscribe model

The publish/subscribe model supports publishing messages to a particular message topic. Subscribers may register interest in receiving messages on a particular message topic. In this model, neither the publisher nor the subscriber knows about each other. A good analogy for this is an anonymous bulletin board

  • Zero or more consumers will receive the message.
  • There is a timing dependency between publishers and subscribers. The publisher has to create a message topic for clients to subscribe. The subscriber has to remain continuously active to receive messages, unless it has established a durable subscription. In that case, messages published while the subscriber is not connected will be redistributed whenever it reconnects.

JMS provides a way of separating the application from the transport layer of providing data. The same Java classes can be used to communicate with different JMS providers by using the Java Naming and Directory Interface (JNDI) information for the desired provider. The classes first use a connection factory to connect to the queue or topic, and then use populate and send or publish the messages. On the receiving side, the clients then receive or subscribe to the messages.

URI scheme

RFC 6167 defines jms: URI scheme for the Java Message Service.

Provider implementations[edit]

To use JMS, one must have a JMS provider that can manage the sessions, queues and topics. Starting from Java EE version 1.4, JMS provider has to be contained in all Java EE application servers. This can be implemented using the message inflow management of the Java EE Connector Architecture, which was first made available in that version.

The following is a list of JMS providers:

  • Amazon SQS with Java Messaging Library
  • Apache ActiveMQ
  • Apache Qpid, using AMQP[5]
  • Oracle Weblogic (part of the Fusion Middleware suite) and Oracle AQ from Oracle
  • EMS from TIBCO
  • FFMQ, GNU LGPL licensed
  • JBoss Messaging and HornetQ from JBoss
  • JORAM, from the OW2 Consortium
  • Lightstreamer JMS Extender (extends any other JMS provider into the Web)
  • Open Message Queue, from Oracle
  • OpenJMS, from The OpenJMS Group
  • RabbitMQ, from Pivotal (JMS Client for RabbitMQ)
  • Solace JMS from Solace Systems
  • SAP NetWeaver Process Integration
  • SonicMQ from Aurea Software
  • SwiftMQ
  • Tervela
  • Ultra Messaging from 29 West (acquired by Informatica)
  • webMethods from Software AG
  • WebSphere Application Server from IBM, which provides an inbuilt default messaging provider known as the Service Integration Bus (SIBus), or which can connect to WebSphere MQ as a JMS provider[6]
  • WebSphere MQ (formerly MQSeries) from IBM
  • FioranoMQ

A historical comparison matrix of JMS providers from 2005 is available at http://www.theserverside.com/reviews/matrix.tss


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值