词条 | Java Message Service |
释义 |
The Java Message Service (JMS) API is a Java message-oriented middleware API for sending messages between two or more clients.[1] It is an implementation to handle the producer–consumer problem. JMS is a part of the Java Platform, Enterprise Edition (Java EE), and was defined by a specification developed at Sun Microsystems, but which has since been guided by the Java Community Process.[2] It is a messaging standard that allows application components based on 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{{See also|Message-oriented middleware|Message passing}}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 coupled communication (such as TCP network sockets, CORBA or RMI) by the introduction of an intermediary component. This approach allows software components to communicate with each other indirectly. 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 2.0 is currently maintained under the Java Community Process as JSR 343.[16] ElementsThe following are JMS elements:[3]
An implementation of the JMS interface for message-oriented middleware (MOM). Providers are implemented as either a Java JMS implementation or an adapter to a non-Java MOM.
An application or process that produces and/or receives messages.
A JMS client that creates and sends messages.
A JMS client that receives messages.
An object that contains the data being transferred between JMS clients.
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.
A distribution mechanism for publishing messages that are delivered to multiple subscribers. ModelsThe JMS API supports two distinct models:
Point-to-point modelUnder the point-to-point messaging system, messages are routed to individual consumers who maintain queues 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-and-subscribe modelThe publish-and-subscribe model supports publishing messages to a particular message "topic". Subscribers may register interest in receiving messages published 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.
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 schemeRFC 6167 defines a Provider implementationsTo use JMS, one must have a JMS provider that can manage the sessions, queues and topics. Starting from Java EE version 1.4, a 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 common JMS providers:
See also
References1. ^Curry, Edward. 2004. "Message-Oriented Middleware"{{dead link|date=November 2017 |bot=InternetArchiveBot |fix-attempted=yes }}. In Middleware for Communications, ed. Qusay H Mahmoud, 1-28. Chichester, England: John Wiley and Sons. {{doi|10.1002/0470862084.ch1}}. {{ISBN|978-0-470-86206-3}} 2. ^{{cite web |url=https://jcp.org/en/jsr/detail?id=914 |title=JSR 914: Java Message Service (JMS) API |website=The Java Community Process Program |access-date=July 31, 2018}} 3. ^1 Java Message Service (JMS) 4. ^Richards et al, pages 3–5 5. ^1 {{cite web |url=http://java.sun.com/products/jms/jms-101-spec.pdf |title=Java Message Service |date=October 5, 1998 |publisher=Sun Microsystems |archive-url=https://web.archive.org/web/19990224001845/http://java.sun.com/products/jms/jms-101-spec.pdf |archive-date=1999-02-24 |access-date=July 31, 2018 |dead-url=no |df= }} 6. ^{{cite web |url=http://java.sun.com/products/jms/docs.html |title=Java Message Service Documentation |date=October 30, 1998 |publisher=Sun Microsystems |archive-url=https://web.archive.org/web/19990224001845/http://java.sun.com/products/jms/docs.html |archive-date=1999-02-24 |access-date=July 31, 2018 |dead-url=no |df= }} 7. ^{{cite web |url=http://www.javasoft.com/products/jms/jms-101a-src.zip |title=Java Message Service Source - Version 1.0.1a |date=October 29, 1998 |publisher=Sun Microsystems |archive-url=https://web.archive.org/web/20000816170233/http://www.javasoft.com/products/jms/jms-101a-src.zip |archive-date=2000-08-16 |access-date=July 31, 2018 |format=ZIP |dead-url=no |df= }} 8. ^{{cite web |url=http://java.sun.com/products/jms/jms1_0_2-spec.pdf |title=Java Message Service |date=November 9, 1999 |publication-date=December 17, 1999 |publisher=Sun Microsystems |archive-url=https://web.archive.org/web/20000823085445/http://java.sun.com/products/jms/jms1_0_2-spec.pdf |archive-date=2000-08-23 |access-date=July 31, 2018 |dead-url=no |df= }} 9. ^{{cite web |url=http://java.sun.com/products/jms/docs.html |title=Java Message Service Documentation |date=December 23, 1999 |publisher=Sun Microsystems |archive-url=https://web.archive.org/web/20000229161639/http://java.sun.com/products/jms/docs.html |archive-date=2000-02-29 |access-date=July 31, 2018 |dead-url=no |df= }} 10. ^{{cite web |url=http://download.oracle.com/otn-pub/jcp/7543-jms-1.0.2b-spec-oth-JSpec/jms-1_0_2b-spec.pdf |title=Java Message Service |date=August 27, 2001 |publisher=Sun Microsystems |access-date=July 31, 2018}} 11. ^{{cite web |url=https://github.com/javaee/jms-spec/raw/9383d33ff79a156d09fb5c9c0ccdfd6b844b1d54/jms1.1/specification/jms-1_1-fr-spec.pdf |title=Java Message Service |date=April 12, 2002 |publisher=Sun Microsystems |access-date=July 31, 2018}} 12. ^{{cite web |url=https://github.com/javaee/jms-spec/raw/9383d33ff79a156d09fb5c9c0ccdfd6b844b1d54/jms2.0/specification/word/JMS20.pdf |title=Java Message Service |date=March 20, 2013 |publisher=Oracle |access-date=July 31, 2018}} 13. ^{{cite web |url=https://javaee.github.io/jms-spec/pages/JMS20FinalRelease |title=JMS 2.0 Final Release |date=June 9, 2017 |website=Java Message Service Specification |access-date=July 31, 2018}} 14. ^{{cite web |url=https://github.com/javaee/jms-spec/raw/9383d33ff79a156d09fb5c9c0ccdfd6b844b1d54/jms2.0a/specification/word/JMS20.pdf |title=Java Message Service |date=March 10, 2015 |publisher=Oracle |access-date=July 31, 2018}} 15. ^{{cite web |url=https://javaee.github.io/jms-spec/pages/JMS20RevA |title=JMS 2.0 errata release (Rev a) |date=July 5, 2017 |website=Java Message Service Specification |access-date=July 31, 2018}} 16. ^{{cite web |url=https://jcp.org/en/jsr/detail?id=343 |title=JSR 343: Java Message Service 2.0 |website=The Java Community Process Program |access-date=July 31, 2018}} 17. ^{{cite web|title=Apache Qpid™: Open Source AMQP Messaging|url=http://qpid.apache.org/}} 18. ^{{cite web|last=Wallis|first=Graham|title=Choosing a messaging system: WebSphere MQ vs. the WebSphere Application Server Service Integration Bus|url=http://www.ibm.com/developerworks/websphere/library/techarticles/1109_wallis/1109_wallis.html|work=IBM developerWorks}} Further reading
External links{{Wikibooks|Java EE Programming|Java Message Service}}
4 : Java enterprise platform|Java specification requests|Message-oriented middleware|Software architecture |
随便看 |
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。