
Description
Once a system is split into services, the hard part is passing messages between them reliably: nothing gets lost when the receiver is down, a traffic spike does not crush downstream, and clients written in different languages all have to fit. Apache ActiveMQ is a message broker built for exactly this. It sits in the middle to queue and route, so producers and consumers never wait on each other.
Its strongest card is multi-protocol support: Java services talk JMS, other languages use AMQP, web pages use STOMP over WebSocket, IoT devices connect with MQTT, and OpenWire is there too, all against the same broker. Ready-made clients exist for JavaScript, C, C++, Python and .NET, so switching language does not mean switching broker.
JMS support: Full JMS 1.1 and most of JMS 2.0, partial Jakarta Messaging 3.1, with a client implementation that includes JNDI.
Persistence: Messages can be stored in KahaDB or in a database over JDBC, so a restart loses nothing.
High availability: Shared storage gives master and standby brokers, and when one dies the other carries on.
Network of brokers: Several brokers form a network to spread the load, so when volume grows you add nodes.
Web console: Bundled in the binary distribution, open localhost:8161/admin after startup to inspect queues and topics.
Protocol coverage: AMQP, STOMP, MQTT and OpenWire are all supported, and it is open source under Apache 2.0.
Its strongest card is multi-protocol support: Java services talk JMS, other languages use AMQP, web pages use STOMP over WebSocket, IoT devices connect with MQTT, and OpenWire is there too, all against the same broker. Ready-made clients exist for JavaScript, C, C++, Python and .NET, so switching language does not mean switching broker.
Features
JMS support: Full JMS 1.1 and most of JMS 2.0, partial Jakarta Messaging 3.1, with a client implementation that includes JNDI.
Persistence: Messages can be stored in KahaDB or in a database over JDBC, so a restart loses nothing.
High availability: Shared storage gives master and standby brokers, and when one dies the other carries on.
Network of brokers: Several brokers form a network to spread the load, so when volume grows you add nodes.
Web console: Bundled in the binary distribution, open localhost:8161/admin after startup to inspect queues and topics.
Protocol coverage: AMQP, STOMP, MQTT and OpenWire are all supported, and it is open source under Apache 2.0.
