// the find
apache/artemis
Apache Artemis
Apache ActiveMQ Artemis is the successor to HornetQ — a mature, multi-protocol message broker that speaks AMQP 1.0, MQTT 3.1/5, STOMP, OpenWire, and JMS. It's the embedded broker in WildFly/JBoss EAP and the drop-in replacement for the original ActiveMQ Classic. If you need a battle-tested JVM broker for enterprise messaging without Kafka's operational weight, this is the default answer.
Protocol breadth is genuinely impressive — one broker, one port (61616 by default), handles JMS, AMQP, MQTT IoT devices, and STOMP from a Ruby app simultaneously without bridges or translators. The journal-based persistence is fast for sequential I/O and survives crashes without XA overhead. High availability via replication or shared storage is well-documented and actually works. The CLI (`artemis perf`) includes a real benchmark harness with microsecond-resolution latency histograms, which is rare for broker projects and useful for capacity planning.
XML-heavy configuration is a pain — `broker.xml` sprawls into hundreds of lines quickly and there's no sane way to modularize it; you end up copy-pasting large blocks across environments. The management console (Hawtio) is a separate deployment and feels like a 2015 JSF app. Star count (1026) wildly underrepresents actual adoption since most users consume it as a transitive dependency through JBoss/Quarkus rather than pulling it directly — the GitHub numbers are misleading if you're using them as a health signal. Zero native async/reactive client story: you get JMS 2.0's async send and that's it; no first-party reactive streams client, so integrating into a Project Reactor pipeline means wrapping blocking JMS calls yourself.