HazelcastMQ provides a simple messaging layer on top of the basic Queue and Topic data structures provided by Hazelcast, an in-memory data grid. HazelcastMQ emphasizes simple configuration and reliable clustering while providing an understandable and flexible messaging API. HazelcastMQ builds on the core features of Hazelcast such as scalability and resilience while maintaining a small footprint and few dependencies. HazelcastMQ can be easily embedded in a single JVM or clustered across a huge number of nodes.
HazelcastMQ is divided into multiple components that can be used independently depending on your integration needs:
- hazelcastmq-core: The core MQ library that provides a JMS 2.0-like API for sending and receiving messages.
- hazelcastmq-camel: An Apache Camel component implementation for HazelcastMQ supporting Camel's integration framework and Enterprise Integration Patterns (EIP).
- hazelcastmq-jms: A JMS 1.1 implementation which layers on top of HazelcastMQ Core.
- hazelcastmq-stomp: A STOMP server which maps all SEND and SUBSCRIBE commands to HazelcastMQ Core producers and consumers.
- hazelcastmq-spring: Provides integrations with the Spring Framework such as transaction management and synchronization.
- yeti: A STOMP server and client framework built on Netty to make it simple to build STOMP implementations for existing brokers.
Refer to each module for code examples or browse through the hazelcastmq-examples module.
The source, javadoc, and binaries are available in the mpilone/mvn-repo GitHub repository. You can configure Maven or Ivy to directly grab the dependencies by adding the repository:
<repositories> <repository> <id>mpilone-snapshots</id> <url>https://github.com/mpilone/mvn-repo/raw/master/snapshots</url> </repository> <repository> <id>mpilone-releases</id> <url>https://github.com/mpilone/mvn-repo/raw/master/releases</url> </repository> </repositories>
And then adding the dependency:
<dependency> <groupId>org.mpilone.hazelcastmq</groupId> <artifactId>hazelcastmq-core</artifactId> <version>X.X.X</version> </dependency>
Refer to my initial blog post.