ActiveMQ Apollo – ActiveMQ’s next generation of messaging
ActiveMQ Apollo is a faster, more reliable, easier to maintain messaging broker built from the foundations of the original ActiveMQ. It accomplishes this using a radically different threading and message dispatching architecture. Like ActiveMQ, Apollo is a multi-protocol broker and supports STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets.
In its current incarnation, ActiveMQ Apollo only supports the STOMP protocol but just like the original ActiveMQ, it’s been designed to be a multi protocol broker. In future versions it should get OpenWire support so it can be compatible with ActiveMQ 5.x JMS clients.
MQTT Compability
ActiveMQ Apollo allows clients to connect using the MQTT which is an open-source protocol specification intended for limited-resource devices on unreliable networks using a publish-subscribe domain. These types of devices usually require a small footprint and are not well suited for text-based protocols such as HTTP or STOMP or even traditional binary protocols such as Openwire or AMQP. MQTT is a compact binary protocol that is optimized for these types of limited devices and unreliable networks.
In previous releases, MQTT was supported in Apollo as a separate plugin. As of now, that plugin has become part of the main development trunk and MQTT support is available out of the box without any other configuration or packaging of third-party plugins.
Since MQTT is a wire-level protocol, any client that implements the protocol should be able to connect to Apollo and also interoperate with other MQTT-compatibe message brokers. Know more
Using the AMQP Protocol
Clients can connect to Apollo using the AMQP protocol. AMQP’s mission is “To become the standard protocol for interoperability between all messaging middleware”. Apollo implements version 1.0 of AMQP which has become an OASIS Standard.
It is recommend that you use an AMQP 1.0 client library like the one provided by the Apache Qpid Proton project in order to access this server or any other AMQP 1.0 server.
AMQP clients can connect to any of the default connectors that the default Apollo configuration opens up, but since AMQP has the IANA-assigned port of 5672 and 5671 for SSL secured AMQP, you might want to add the following configuration elements to your Apollo config file so that AMQP clients can more easily connect to Apollo.
<connector id="amqp" bind="tcp://0.0.0.0:5672"/>
<connector id="amqps" bind="ssl://0.0.0.0:5671"/>
READ MORE –Official documentation
Using the STOMP Protocol
Clients can connect to Apollo using the STOMP protocol. STOMP provides an interoperable messaging wire level protocol that allows any STOMP clients can communicate with any STOMP message broker. It aims to provide easy and widespread messaging interoperability among many languages, platforms and brokers.
Apollo supports the following versions of the STOMP specification:
- STOMP 1.0
- STOMP 1.1
- STOMP 1.2
Using the OpenWire Protocol
Clients can connect to ActiveMQ Apollo using the OpenWire protocol. OpenWire is a binary, on-the-wire protocol used natively by ActiveMQ. It was designed to be a fast, full-featured, and JMS-compliant protocol for message brokers. Currently there are native client libraries for Java, C, C#, and C++. Further OpenWire support can be built by implementing language-specific code generators, however, for most cross-langauge needs, the STOMP protocol is best.
OpenWire was designed to be extended but yet backward compatible with older versions. When a client connects to the broker, the protocol version that’s used is negotiated based on what each can support.
Client Libraries
Apollo supports v3.1 of the MQTT protocol. The following clients will work:
- Java : mqtt-client, MeQanTT
- C : libmosquitto
- Erlang : erlmqtt, my-mqtt4erl
- .NET : MQTTDotNet, nMQTT
- Perl : net-mqtt-perl, [anyevent-mqtt-perl]https://github.com/beanz/anyevent-mqtt-perl()
- Python : nyamuk
- Ruby : mqtt-ruby, ruby-em-mqtt
- Javascript : Node.js MQTT Client
- Delphi : TMQTTCLient
- Device specific: Arduino, mbed, Nanode, Netduino
To see an up-to-date listing of client libraries, please the MQTT website for its software listings.
Features
- Stomp 1.0 Protocol Support
- Stomp 1.1 Protocol Support
- Topics and Queues
- Queue Browsers
- Durable Subscriptions on Topics
- Reliable Messaging
- Message swapping
- Message Selectors
- JAAS Authentication
- ACL Authorization
- SSL/TLS Support
- REST Based Management
Web Administration
Apollo provides a simple web interface to monitor the status of the broker. Once the admin interface will be accessible at:
- http://127.0.0.1:61680/ or https://127.0.0.1:61681/
The default login id and password is admin
and password
.
How To Install ActiveMQ Apollo
- Download the Apollo distribution that is most appropriate for your operating system. (for latest please visit official website)
- Extract the distribution archive:
Unix/Linux/OS X
tar -zxvf apache-apollo-1.7.1-unix-distro.tar.gz
Windows
jar -xvf apache-apollo-1.7.1-windows-distro.zip
The distribution will be extracted into a directory called, apache-apollo-1.7.1
. The rest of this document will refer to the full path to this directory as ${APOLLO_HOME}
.
Optional Windows Prerequisites
If you’re on Windows Vista, Server 2008, or later you should install the MS VC++ 2010 Redistributable package so that Apollo can use the JNI implementation of LevelDB.
- If you’re running a 32 bit JVM, install: Microsoft Visual C++ 2010 Redistributable Package (x86)
- If you’re running a 64 bit JVM, install: Microsoft Visual C++ 2010 Redistributable Package (x64)
You may like also:
- IoT protocols
- STOMP – Simple/Streaming Text Oriented Messaging Protocol
- CoAP Protocol- Constrained Application Protocol
- Wireless IoT Network Protocols
- :Symphony Link – Best Alternative of LoRaWAN
The ActiveMQ broker code-named Apollo has not been under development since 2015. The GitHub project has been archived, and ActiveMQ has a new next-generation broker code-named Artemis based on the HornetQ broker which was donated to the ActiveMQ community almost 6 years ago now.