fbpx
Wikipedia

Jakarta Messaging

The Jakarta Messaging API (formerly Java Message Service or JMS API) is a Java application programming interface (API) for message-oriented middleware. It provides generic messaging models, able to handle the producer–consumer problem, that can be used to facilitate the sending and receiving of messages between software systems.[1] Jakarta Messaging is a part of Jakarta EE and was originally defined by a specification developed at Sun Microsystems before being guided by the Java Community Process.[2]

General idea of messaging edit

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.[3]

Version history edit

  • JMS 1.0[4]
  • JMS 1.0.1 (October 5, 1998)[4]
  • JMS 1.0.1a (October 30, 1998)[5][6]
  • JMS 1.0.2 (December 17, 1999)[7]
  • JMS 1.0.2a (December 23, 1999)[8]
  • JMS 1.0.2b (August 27, 2001)[9]
  • JMS 1.1 (April 12, 2002)[10]
  • JMS 2.0 (May 21, 2013)[11][12]
  • JMS 2.0a (March 16, 2015)[13][14]

JMS 2.0 is currently maintained under the Java Community Process as JSR 343.[15]

JMS 3.0 is under early development as part of Jakarta EE.[16]

Elements edit

The following are JMS elements:[17]

JMS provider
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.
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). As the name queue suggests, the messages are delivered in the order sent. A JMS queue guarantees that each message is processed only once.
JMS topic
A distribution mechanism for publishing messages that are delivered to multiple subscribers.

Models edit

The JMS API supports two distinct models:

  • Point-to-point
  • Publish-and-subscribe

Point-to-point model edit

Under 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 model edit

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

  • 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 edit

RFC 6167 defines a 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, 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 edit

References edit

  1. ^ Curry, Edward. 2004. "Message-Oriented Middleware". 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. ^ "JSR 914: Java Message Service (JMS) API". The Java Community Process Program. Retrieved July 31, 2018.
  3. ^ Richards et al., pages 3–5.
  4. ^ a b "Java Message Service" (PDF). Sun Microsystems. October 5, 1998. (PDF) from the original on 1999-02-24. Retrieved July 31, 2018.
  5. ^ "Java Message Service Documentation". Sun Microsystems. October 30, 1998. from the original on 1999-02-24. Retrieved July 31, 2018.
  6. ^ . Sun Microsystems. October 29, 1998. Archived from the original (ZIP) on August 16, 2000. Retrieved July 31, 2018.
  7. ^ "Java Message Service" (PDF). Sun Microsystems (published December 17, 1999). November 9, 1999. (PDF) from the original on 2000-08-23. Retrieved July 31, 2018.
  8. ^ "Java Message Service Documentation". Sun Microsystems. December 23, 1999. from the original on 2000-02-29. Retrieved July 31, 2018.
  9. ^ "Java Message Service" (PDF). Sun Microsystems. August 27, 2001. Archived (PDF) from the original on 2022-10-09. Retrieved July 31, 2018.
  10. ^ "Java Message Service" (PDF). Sun Microsystems. April 12, 2002. Archived (PDF) from the original on 2022-10-09. Retrieved July 31, 2018.
  11. ^ "Java Message Service" (PDF). Oracle. March 20, 2013. Archived (PDF) from the original on 2022-10-09. Retrieved July 31, 2018.
  12. ^ "JMS 2.0 Final Release". Java Message Service Specification. June 9, 2017. Retrieved July 31, 2018.
  13. ^ "Java Message Service" (PDF). Oracle. March 10, 2015. Archived (PDF) from the original on 2022-10-09. Retrieved July 31, 2018.
  14. ^ "JMS 2.0 errata release (Rev a)". Java Message Service Specification. July 5, 2017. Retrieved July 31, 2018.
  15. ^ "JSR 343: Java Message Service 2.0". The Java Community Process Program. Retrieved July 31, 2018.
  16. ^ Monson-Haefel, Richard (December 6, 2018). "JMS 3.0: Get Involved!". Tomitribe. Retrieved July 17, 2020.
  17. ^ Java Message Service (JMS)
  18. ^ "Apache Qpid™: Open Source AMQP Messaging".
  19. ^ Wallis, Graham. "Choosing a messaging system: WebSphere MQ vs. the WebSphere Application Server Service Integration Bus". IBM developerWorks.
  20. ^ "TIBCO Cloud™ Messaging TIBCO Software".
  21. ^ "TIBCO Enterprise Message Service™".

Further reading edit

  • Richards, Mark; Richard Monson-Haefel; David A. Chappell (2009). Java Message Service, Second Edition. O'Reilly. ISBN 978-0-596-52204-9.

External links edit

  • Official website  
  • JSR 343: Java Message Service 2.0
  • javax.jms API Javadoc documentation
  • Oracle's Java EE 7 JMS tutorial
  • A historical comparison matrix of JMS providers

jakarta, messaging, formerly, java, message, service, java, application, programming, interface, message, oriented, middleware, provides, generic, messaging, models, able, handle, producer, consumer, problem, that, used, facilitate, sending, receiving, message. The Jakarta Messaging API formerly Java Message Service or JMS API is a Java application programming interface API for message oriented middleware It provides generic messaging models able to handle the producer consumer problem that can be used to facilitate the sending and receiving of messages between software systems 1 Jakarta Messaging is a part of Jakarta EE and was originally defined by a specification developed at Sun Microsystems before being guided by the Java Community Process 2 Contents 1 General idea of messaging 1 1 Version history 2 Elements 3 Models 3 1 Point to point model 3 2 Publish and subscribe model 4 URI scheme 5 Provider implementations 6 See also 7 References 8 Further reading 9 External linksGeneral idea of messaging editSee also Message oriented middleware and 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 3 Version history edit JMS 1 0 4 JMS 1 0 1 October 5 1998 4 JMS 1 0 1a October 30 1998 5 6 JMS 1 0 2 December 17 1999 7 JMS 1 0 2a December 23 1999 8 JMS 1 0 2b August 27 2001 9 JMS 1 1 April 12 2002 10 JMS 2 0 May 21 2013 11 12 JMS 2 0a March 16 2015 13 14 JMS 2 0 is currently maintained under the Java Community Process as JSR 343 15 JMS 3 0 is under early development as part of Jakarta EE 16 Elements editThe following are JMS elements 17 JMS provider 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 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 As the name queue suggests the messages are delivered in the order sent A JMS queue guarantees that each message is processed only once JMS topic A distribution mechanism for publishing messages that are delivered to multiple subscribers Models editThe JMS API supports two distinct models Point to point Publish and subscribe Point to point model edit Under 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 model edit The 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 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 editRFC 6167 defines a jms URI scheme for the Java Message Service Provider implementations editTo 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 Amazon SQS s Java Messaging Library Apache ActiveMQ Apache Qpid using AMQP 18 IBM MQ formerly MQSeries then WebSphere MQ IBM WebSphere Application Server s Service Integration Bus SIBus 19 JBoss Messaging and HornetQ from JBoss JORAM from the OW2 Consortium Open Message Queue from Oracle OpenJMS from the OpenJMS Group Oracle WebLogic Server and Oracle AQ PubSub from Solace RabbitMQ from Pivotal Software TIBCO Cloud Messaging 20 from TIBCO Software TIBCO Enterprise Message Service 21 from TIBCO SoftwareSee also editMessage Driven Beans Message queue the concept underlying JMS Service oriented architecture Event driven SOA Messaging technologies that do not implement the JMS API include Advanced Message Queuing Protocol AMQP standardized message queue protocol with multiple independent implementations Data Distribution Service DDS An Object Management Group OMG standardized real time messaging system with over ten implementations that have demonstrated interoperability between publishers and subscribers Microsoft Message Queuing similar technology implemented for NET FrameworkReferences edit Curry Edward 2004 Message Oriented Middleware 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 JSR 914 Java Message Service JMS API The Java Community Process Program Retrieved July 31 2018 Richards et al pages 3 5 a b Java Message Service PDF Sun Microsystems October 5 1998 Archived PDF from the original on 1999 02 24 Retrieved July 31 2018 Java Message Service Documentation Sun Microsystems October 30 1998 Archived from the original on 1999 02 24 Retrieved July 31 2018 Java Message Service Source Version 1 0 1a Sun Microsystems October 29 1998 Archived from the original ZIP on August 16 2000 Retrieved July 31 2018 Java Message Service PDF Sun Microsystems published December 17 1999 November 9 1999 Archived PDF from the original on 2000 08 23 Retrieved July 31 2018 Java Message Service Documentation Sun Microsystems December 23 1999 Archived from the original on 2000 02 29 Retrieved July 31 2018 Java Message Service PDF Sun Microsystems August 27 2001 Archived PDF from the original on 2022 10 09 Retrieved July 31 2018 Java Message Service PDF Sun Microsystems April 12 2002 Archived PDF from the original on 2022 10 09 Retrieved July 31 2018 Java Message Service PDF Oracle March 20 2013 Archived PDF from the original on 2022 10 09 Retrieved July 31 2018 JMS 2 0 Final Release Java Message Service Specification June 9 2017 Retrieved July 31 2018 Java Message Service PDF Oracle March 10 2015 Archived PDF from the original on 2022 10 09 Retrieved July 31 2018 JMS 2 0 errata release Rev a Java Message Service Specification July 5 2017 Retrieved July 31 2018 JSR 343 Java Message Service 2 0 The Java Community Process Program Retrieved July 31 2018 Monson Haefel Richard December 6 2018 JMS 3 0 Get Involved Tomitribe Retrieved July 17 2020 Java Message Service JMS Apache Qpid Open Source AMQP Messaging Wallis Graham Choosing a messaging system WebSphere MQ vs the WebSphere Application Server Service Integration Bus IBM developerWorks TIBCO Cloud Messaging TIBCO Software TIBCO Enterprise Message Service Further reading editRichards Mark Richard Monson Haefel David A Chappell 2009 Java Message Service Second Edition O Reilly ISBN 978 0 596 52204 9 External links edit nbsp The Wikibook Java EE Programming has a page on the topic of Java Message Service Official website nbsp JSR 343 Java Message Service 2 0 javax jms API Javadoc documentation Oracle s Java EE 7 JMS tutorial A historical comparison matrix of JMS providers Retrieved from https en wikipedia org w index php title Jakarta Messaging amp oldid 1115125080, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.