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. This page does not list the features which Artemis has beyond what currently exists in 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 is not meant to be a 100% complete reimplementation of ActiveMQ Classic. Features should only be reimplemented 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 Classic 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 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 Classic to Artemis over the wire.