Open Message Queue

Open Message Queue (often abbreviated as OpenMQ) is an open‑source implementation of the Java Message Service (JMS) API, providing a message‑oriented middleware (MOM) platform for Java‑based enterprise applications. Developed originally by Sun Microsystems and later maintained by Oracle Corporation, OpenMQ serves as the reference implementation for the JMS specification and is tightly integrated with the GlassFish application server.

History and Development

  • The project began as part of Sun Microsystems’ effort to provide a standards‑compliant messaging solution for Java EE.
  • OpenMQ was first released publicly in 2006, coinciding with the release of GlassFish 2.0, where it was bundled as the default JMS provider.
  • After Oracle’s acquisition of Sun in 2010, the project continued under Oracle’s stewardship, with source code hosted on public repositories (e.g., GitHub) and released under the Common Development and Distribution License (CDDL) and the GNU General Public License (GPL) v2 with the Classpath Exception.

Technical Overview

  • Protocol Support: Implements the JMS 1.1 (and later JMS 2.0) specifications, supporting point‑to‑point (queues) and publish‑subscribe (topics) messaging models.
  • Transport: Uses TCP/IP for client‑broker communication, with optional SSL/TLS for secure channels.
  • Persistence: Offers configurable message persistence using file‑based storage or relational databases, enabling reliable delivery and recovery after broker failures.
  • Scalability: Supports clustering of brokers for load balancing and high availability, allowing horizontal scaling across multiple nodes.
  • Administration: Provides command‑line tools (imqadmin, imqcmd) and a web‑based console for managing destinations, connections, and broker clusters.

Integration and Usage

  • GlassFish: OpenMQ is the default JMS provider for the GlassFish Java EE application server, allowing Java EE applications to use JMS resources without additional configuration.
  • Standalone: It can be deployed as an independent message broker, enabling non‑GlassFish Java applications or other language clients (via JMS bridges) to communicate through OpenMQ.
  • Compatibility: Because it adheres to the JMS API, any JMS‑compatible client library can interact with OpenMQ, making it interchangeable with commercial JMS brokers for many use cases.

Licensing
OpenMQ is released under the CDDL‑GPL dual‑license model, permitting both open‑source usage and integration into proprietary software under the terms of the chosen license.

Adoption and Community
While OpenMQ is less widely adopted than commercial JMS providers such as IBM MQ or Apache ActiveMQ, it remains the reference implementation for the JMS specification and is used primarily in environments that employ GlassFish or require a lightweight, standards‑compliant Java messaging broker. The project maintains an active mailing list and issue tracker for bug reports and feature requests.

See also

  • Java Message Service (JMS)
  • GlassFish Application Server
  • Apache ActiveMQ
  • Oracle Messaging Service (OMS)
Browse

More topics to explore