Artemis' Roadmap to ActiveMQ Next

The goal of this page is to identify the outstanding issues that must be addressed by Artemis in order to achieve feature parity with ActiveMQ “Classic”. The overall objective for working toward feature parity between “Classic” and Artemis is for Artemis to eventually become the next major version of ActiveMQ. This page exists so that we can work together as a group to achieve this goal. This page does not list the features which Artemis has beyond what currently exists in ActiveMQ “Classic”.

Features/Scenarios

This section should be used to compare what features from ActiveMQ “Classic” have been implemented in Artemis. Feature items can be listed, with links to JIRA tickets for longer conversation and hashing out specific feature details. This will help us to more clearly track everything that Artemis needs. This list of features was taken from the “Classic” features page.

Keep in mind that not every feature must have a ✅. Artemis may still be ready to become ActiveMQ Next even if features on this page still have an ❌ if those features are deemed low priority. Artemis is not meant to be a 100% complete reimplementation of ActiveMQ “Classic”. Features should only be reimplimented where it makes good sense.

Protocol Support

Feature Artemis Support Version(s)
OpenWire  
Stomp 1.0, 1.1, 1.2
AMQP 1.0
MQTT 3.1
REST  

General

Feature Artemis Support JIRA Notes
Broker Camel Component   example
Discovery   UDP multicast & JGroups
Enterprise Integration Patterns   see “Broker Camel Component”
Horizontal Scaling   supported via clustering or federation
JMSXUserID   documentation
JMX   documentation
Logging a warning if you forget to start a connection    
MDC Logging    
Scaling the depth of a queue   documentation
URI Protocols   vm, tcp, udp, jgroups
Proxy Connector    
Unix Shell Script    

Clustering

Feature Artemis Support JIRA Notes
Master-slave   using JDBC, shared filesystem, & replication; documentation
Network of brokers ARTEMIS-2265 equivalent through clustering or federation
Replicated message store   equivalent via replication HA config

Consumer Features

Feature Artemis Support JIRA Notes
Consumer Dispatch Async   equivalent via the directDeliver URL parameter
Consumer Priority ARTEMIS-196 documentation
Exclusive Consumer ARTEMIS-853 documentation
Manage Durable Subscribers   equivalent via the expiry-delay address setting
Message Groups   documentation
Redelivery Policy   documentation
Retroactive Consumer ARTEMIS-2504 documentation coming in 2.11
Selectors   documentation
Slow Consumer Handling   documentation
Subscription Recovery Policy   see retroactive addresses

Destination Features

Feature Artemis Support JIRA Notes
Composite Destinations   supported for OpenWire clients; see also diverts
Configure Startup Destinations    
Delete Inactive Destinations    
Destination Options    
Mirrored Queues   rough equivalent via non-exclusive diverts
Per Destination Policies   config via address-settings
Virtual Destinations   docs for backwards compatibility with OpenWire clients
Wildcards   documentation

Interceptors

Feature Artemis Support JIRA Notes
Destinations Plugin   documentation
Logging Interceptor   documentation
StatisticsPlugin   equivalent via management messages
TimeStampPlugin    

Message Dispatching Features

Feature Artemis Support JIRA Notes
Async Sends   supported for OpenWire & also for core (via blockOnDurableSend and blockOnNonDurableSend URL parameters)
Pluggable Dispatch Policies   delay-before-dispatch and consumers-before-dispatch have been implemented
Message Cursors   equivalent via paging
Optimized Acknowledgement   supported for OpenWire & core as well via ackBatchSize URL parameter
Producer Flow Control   documentation
Total Ordering    

Message Features

Feature Artemis Support JIRA Notes
ActiveMQ Message Properties    
Advisory Message   equivalent support via management notifications
Blob Messages   arbitrarily large messages supported
Delay and Schedule Message Delivery   documentation
Message Transformation   supported via transformers and remoting interceptors
ObjectMessage   documentation
Structured Message Properties and MapMessages    

Persistence

Feature Artemis Support JIRA Notes
AMQ Message Store   equivalent functionality via journal
Configurable IOException Handling   all IO errors considered critical
JDBC Support    
KahaDB   equivalent functionality via journal
Kaha Persistence   equivalent functionality via journal
Periodically checking disk limits    
Pluggable storage lockers    
Replicated LevelDB Store   equivalent functionality via journal replication HA config
Multi-kahaDB ARTEMIS-839  

Security

Feature Artemis Support JIRA Notes
Audit Logging ARTEMIS-2273 documentation
Cached LDAP Authorization Module ARTEMIS-168 documentation
Encrypted passwords   documentation
Shiro   equivalent functionality available via JAAS

Migration

This section should help to answer the end user question, ‘How do I migrate from ActiveMQ “Classic” to Artemis?’. This should include the identification of any tools that can help make this easier, as well as documenting information and procedures specific to migrating.

  • Migration Guide
  • Export messages from KahaDB using this tool. The exported XML can be imported via the ./artemis data imp command.
  • For non-standard backends (where direct export isn’t an option) follow this example to migrate messages from ActiveMQ “Classic” to Artemis over the wire.

Apache, ActiveMQ, Apache ActiveMQ, the Apache feather logo, and the Apache ActiveMQ project logo are trademarks of The Apache Software Foundation. Copyright © 2021, The Apache Software Foundation. Licensed under Apache License 2.0.