Guide · ActiveMQ

The ActiveMQ Modernization Guide, 2026

ActiveMQ estates are facing a decision they did not ask for: Classic is a mature broker with a limited future, Artemis is the successor with a different operational model, and RabbitMQ is the broker many of the same workloads moved to. This guide takes the decision in order and points to the article that works each step.

Tyler Eastridge

By Tyler Eastridge, Head of Operations

LinkedIn · Updated · 7 min read · 7 sections

On this page

The decision in one paragraph

The decision in one paragraph

Work out which ActiveMQ you run, because Classic and Artemis are different brokers sharing a name. If the estate is JMS-centric and the Java clients are staying, Artemis is the natural successor and the move is mostly configuration and clustering changes. If the estate has outgrown JMS, needs AMQP or MQTT reach, per-message control or a broader client ecosystem, RabbitMQ is the better destination and the migration is an architecture project rather than an upgrade. Either way the work is the inventory of destinations, selectors, transactions and the integrations nobody documented.

Which ActiveMQ you run, and what changed

ActiveMQ Classic and ActiveMQ Artemis are separate codebases with different clustering, persistence and configuration models. Artemis is the successor, built from the HornetQ code base, with a different journal, a different high-availability model and a different address model. Whether Classic is being phased out is a question with a nuanced answer; the practical point is that new development is concentrated on Artemis.

Release lines: status and security position on 20 October 2026

Apache marks two ActiveMQ Classic lines as Active, 6.3.x and 5.19.x, and defines every other line as Inactive: reached end-of-life and no longer actively maintained (Apache download page, checked 20 October 2026). The last column is the practical test. Apache's advisory for CVE-2026-74761 names fixed releases only on the two Active lines.

Classic lineApache statusLatest releaseJavaClient APIFixed release for CVE-2026-74761
6.3.xActive6.3.2 (2 Sep 2026)17, 21, 25Jakarta JMS 2 / 3.1 (partial)Yes, 6.3.2
6.2.xInactive6.2.1017 and laterJakarta JMS 2 / 3.1 (partial)No fixed release on this line
6.1.x, 6.0.xInactive6.1.8, 6.0.117 to 22Jakarta JMS 2 / 3.1 (partial)No fixed release on these lines
5.19.xActive5.19.11 (5 Sep 2026)11, 17, 21javax JMS 1.1; Jakarta JMS 2 clientYes, 5.19.11
5.18.xInactive5.18.7 (19 Mar 2025)11 to 22javax JMS 1.1; Jakarta JMS 2 clientNo fixed release on this line
5.17.xInactive5.17.711 to 22javax JMS 1.1No fixed release on this line
5.16.x, 5.15.xInactive5.16.8, 5.15.161.8javax JMS 1.1No fixed release on these lines
5.14.x and earlierInactive5.14.51.7 or earlierjavax JMS 1.1No fixed release on these lines

A line with no fixed release is not unpatched by accident: it is where upstream has stopped. Four advisories show what that costs, with scores from the National Vulnerability Database (NVD) and fixed versions from Apache's advisory files:

CVENVD publishedCVSS v3.1What it isFixed in
CVE-2023-4660427 Oct 20239.8 Critical; CISA KEV from 2 Nov 2023OpenWire marshaller remote code execution5.15.16, 5.16.7, 5.17.6, 5.18.3
CVE-2026-341977 Apr 20268.8 HighAuthenticated code execution through the web console's Jolokia bridge5.19.4, 6.2.3
CVE-2026-5073430 Jun 20267.5 HighUnauthenticated denial of service during OpenWire negotiation5.19.8, 6.2.7
CVE-2026-747619 Sep 20267.5 HighAuthenticated client can spoof a clientId when removing a durable subscription5.19.11, 6.3.2

CVE-2023-46604 was fixed on each of the 5.15 to 5.18 lines. The later advisories were not: Apache lists them as affecting every release before 5.19.4, 5.19.8 or 5.19.11 and the 6.x releases before the fixed versions, so a 5.18 or older broker has no fixed release for any of the three. Artemis is a separate codebase: its download page names 2.57.0 (9 September 2026) as the current release, requires Java 17 or later and gives no end-of-life dates for earlier versions. Apache's Artemis advisories name 2.57.0 as the fix for seven 2026 issues affecting releases up to 2.56.0, among them CVE-2026-67593 (OpenWire queue deletion before authentication, CVSS 9.1) and CVE-2026-57967 (CORE session takeover, CVSS 9.8), both published by NVD on 10 September 2026. On Artemis, staying on the current release is the patch path.

Sources, all checked 20 October 2026: the ActiveMQ Classic download page and security advisories, the Artemis download page and security advisories, and NVD records for each CVE listed.

The jakarta.jms client impact of moving from 5.x to 6.x

Classic 6.0 and later clients use the jakarta.jms package; 5.x clients use javax.jms. Apache's JMS 2 documentation calls it a package name change only: ActiveMQ's own package names do not change, but every application that imports javax.jms has to be recompiled against jakarta.jms, and 6.x needs Java 17. The 5.18.1 and later releases include a transitional activemq-client-jakarta module that gives client-only, partial Jakarta Messaging 3.1 support. It cannot share a JVM with the javax client or an embedded broker, so it works against remote brokers only, and it is removed in 6.x. Apache's own caveat applies throughout: verify the JMS features you use in the release notes, because the support is partial.

That makes 5.19.x the lower-risk step for an estate that cannot move its applications yet: it is still javax on the broker, it is Active, and it carries the 2026 fixes. The jakarta move then becomes an application project that can be scheduled separately from the security fix.

Response targets from 15 minutes, by plan. Named senior engineers.

Contact Us

A rolling migration with OpenWire clients

Mixed javax and jakarta clients can talk to the same broker over OpenWire, so the broker upgrade and the application move do not have to happen on the same night. Apache's tracker issue AMQ-9418, resolved as fixed in 5.16.8, 5.17.7, 5.18.4, 6.0.2 and 6.1.0, added exception mapping between the two namespaces so javax clients can work with a jakarta-based broker and the reverse. Without it, OpenWire sends exceptions as class names, and a client that cannot load the class falls back to a generic JMSException.

  1. Bring every client library to a release that carries the AMQ-9418 fix before the broker changes.
  2. Upgrade brokers one at a time, to an Active line, and confirm that existing 5.x clients reconnect and fail over.
  3. Move applications to jakarta.jms one service at a time, deploying each against the upgraded broker.
  4. Test the failure paths in staging: rejected authorisation, a missing destination and a dropped connection are where the two namespaces differ.

Apache does not publish a compatibility guarantee between release lines on the pages cited here, so treat the order as a rehearsal plan, not a promise.

What moving to Artemis changes operationally

Addresses and queues replace destinations, the journal replaces KahaDB, live-backup pairs replace the Classic master-slave model, and the configuration file is new. The JMS clients mostly survive; the operational runbooks do not. Plan the move as a new broker deployment with a migration of state, not as a version upgrade.

When RabbitMQ is the better destination

When the estate is no longer JMS-centric: polyglot clients, AMQP or MQTT reach, per-message acknowledgement and routing control, or an operations team that already runs RabbitMQ elsewhere. The comparison post works the protocols, clustering and performance differences; the honest answer is that a JMS estate with Java clients usually goes to Artemis, and a broader one usually goes to RabbitMQ.

Which fits which situation

  • Artemis: the estate is JMS-centric and the Java clients are staying.
  • RabbitMQ: polyglot clients, AMQP or MQTT reach, per-message acknowledgement and routing control, or a team that already runs RabbitMQ.
  • Stay on ActiveMQ: the application leans on deep JMS 2.0 semantics (message selectors, JMSXGroupID message groups, shared durable subscriptions, JMSReplyTo), uses XA transactions, or the broker is stable and unloved. If the real problem is the application, such as unbounded prefetch or consumers that cannot tolerate a redelivery, a new broker carries it across intact.

From our engagements. In our engagements an ActiveMQ migration almost always starts from one of five triggers rather than a benchmark: Classic end-of-life pressure, polyglot clients, data safety after a KahaDB recovery or a failed shared-storage failover, device fleets sending MQTT or AMQP 1.0, and staffing, the one people underrate. Where the real problem is the application, we would rather keep you on ActiveMQ and fix the application than sell you a migration.

How the migration runs

Inventory destinations, selectors, transactions, virtual topics and the integrations nobody documented; map each to its equivalent; build the target on quorum queues from day one; run in parallel with a bridge; move consumers first and producers last; validate before decommissioning. The RabbitMQ migration guide sequences it.

From our engagements. A university ran ActiveMQ and a RabbitMQ cluster several minor versions behind to stream student information system events. AceMQ assessed both estates and designed one RabbitMQ target. Consolidation was expected to roughly double the load on the surviving cluster, so sizing could not be inherited, and because the RabbitMQ version was past community support, the upgrade and the migration became one project, with a parallel cluster for a staged cutover and training for the team that operates it (the case).

Frequently asked questions

Is ActiveMQ Classic 5.x end of life?

Mostly. On 20 October 2026 Apache's download page marked only 5.19.x and 6.3.x as Active and every other Classic line as Inactive, meaning end-of-life and no longer actively maintained. Lines 5.18 and older have no fixed release for the 2026 advisories listed in the status table. The ActiveMQ end-of-life post keeps the dated position.

Is ActiveMQ Classic deprecated?

Not formally, but new development is concentrated on Artemis, and estates on Classic should plan a move rather than assume indefinite maintenance. The Classic vs Artemis post covers the current position.

Should we move from ActiveMQ to Artemis or to RabbitMQ?

Artemis if the estate is JMS-centric with Java clients staying; the move is a new broker deployment but the clients mostly survive. RabbitMQ if the estate needs AMQP or MQTT reach, per-message control, or a polyglot client ecosystem. The comparison post works the trade-offs.

Does RabbitMQ support JMS?

Through a JMS client library, yes, for most of the API. Some JMS semantics map differently onto AMQP, and selectors and transactions need checking case by case, which is why the inventory comes first.

Does AceMQ support ActiveMQ?

Yes, Classic and Artemis, in production, with the same 24/7 model as RabbitMQ, and AceMQ runs the migration to RabbitMQ where that is the destination.

More resources

Other ActiveMQ guides, comparisons and research

Free Consultation

Get Expert Eyes on Your ActiveMQ Environment

Whether you're troubleshooting a production incident, planning a migration, or want a second opinion on your architecture — our team is ready. No pitch, just answers.

Email Us