This is an automated email from the ASF dual-hosted git repository. jbertram pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/activemq-website.git
commit f46213d5c056a2071df8fb3f86b14a05132b0057 Author: Justin Bertram <[email protected]> AuthorDate: Wed Nov 27 13:35:50 2019 -0600 rework roadmap for clarity and comprehensiveness --- content/activemq-artemis-roadmap.html | 634 +++++++++++++++++++++++++++++----- src/activemq-artemis-roadmap.md | 183 ++++++---- 2 files changed, 680 insertions(+), 137 deletions(-) diff --git a/content/activemq-artemis-roadmap.html b/content/activemq-artemis-roadmap.html index aef00d7..e760ca9 100644 --- a/content/activemq-artemis-roadmap.html +++ b/content/activemq-artemis-roadmap.html @@ -86,15 +86,13 @@ <div class="content"> <div class="page-title-activemq5"> <div class="container"> - <h1>ActiveMQ Artemis Roadmap</h1> + <h1>ActiveMQ Artemis Roadmap to 6.0</h1> </div> </div> <div class="container" > <div class="row" style="margin-top: 30px"> <div class="col-12 activemq5"> - <p><a href="activemq-artemis-roadmap">ActiveMQ Artemis Roadmap</a></p> - -<p>The goal of this page is to identify the outstanding issues that must be addressed by Artemis in order to achieve some level of feature parity with ActiveMQ 5.x. The overall objective for working toward feature parity between ActiveMQ 5.x and Artemis is for Artemis to eventually become ActiveMQ 6.x. This page exists so that we can work together as a group to achieve this goal.</p> + <p>The goal of this page is to identify the outstanding issues that must be addressed by Artemis in order to achieve some level of feature parity with ActiveMQ 5.x. The overall objective for working toward feature parity between ActiveMQ 5.x and Artemis is for Artemis to eventually become ActiveMQ 6.x. This page exists so that we can work together as a group to achieve this goal. This page does <strong>not</strong> list the features which Artemis has <em>beyond</em> what currentl [...] <blockquote> <p><strong>Work in Progress</strong></p> @@ -102,92 +100,574 @@ <p>This page is a work in progress and will be updated frequently.</p> </blockquote> -<h1 id="using-this-page">Using this page</h1> - -<p>Feature items can be listed, with links to JIRA tickets for longer conversation and hashing out specific feature details</p> - <h1 id="featuresscenarios">Features/Scenarios</h1> -<p>This section should be used to identify all the ActiveMQ 5.x features that Artemis needs. This should include <strong>all</strong> Artemis features that we can identify, including those from ActiveMQ that Artemis has already implemented. This will help us to more clearly track everything that Artemis needs.</p> - -<h3 id="advisory-support">Advisory Support</h3> - -<ul> - <li>Support for broker state change advisories (master -> slave, slave -> master)</li> - <li>Support for connection advisories (connect, disconnect, unclean disconnect, authn fail, authz fail)</li> - <li>Support for consumer advisories (new consumer, closed, slow consumer)</li> - <li>Support for producer advisories (new producer, closed, fast producer, message size exceeded, memoryLimit reached, storage limit reached)</li> - <li>Support for destination advisories (new dest, deleted)</li> -</ul> - -<h3 id="broker-clustering">Broker Clustering</h3> - -<ul> - <li>Support full-duplex broker-to-broker cluster connections <a href="https://issues.apache.org/jira/browse/ARTEMIS-838">ARTEMIS-838</a></li> -</ul> - -<h3 id="activemq-5x-client-compatibility">ActiveMQ 5.x Client Compatibility</h3> - -<ul> - <li>Full support of Openwire (TODO: specifically, which versions)</li> - <li>PooledConnectionFactory</li> -</ul> - -<h3 id="destination-interceptors">Destination Interceptors</h3> - -<ul> - <li>Virtual Topic support <a href="https://issues.apache.org/jira/browse/ARTEMIS-550">ARTEMIS-550</a></li> -</ul> +<p>This section should be used to compare what features from ActiveMQ 5.x 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 ActiveMQ 5.x features was taken from the <a href="features">5.x features page</a>.</p> + +<p>Keep in mind that not every feature must have an ✅. Artemis may still be ready to become ActiveMQ 6.0 even if a feature on this page still has an ❌ if that feature is deemed low priority. Artemis is not meant to be a 100% complete reimplementation of ActiveMQ 5.x. Features should only be reimplimented where it makes good sense.</p> + +<h3 id="protocol-support">Protocol Support</h3> + +<table> + <thead> + <tr> + <th>Feature</th> + <th style="text-align: center">Artemis Support</th> + <th>Version(s)</th> + </tr> + </thead> + <tbody> + <tr> + <td>OpenWire</td> + <td style="text-align: center">✅</td> + <td> </td> + </tr> + <tr> + <td>Stomp</td> + <td style="text-align: center">✅</td> + <td>1.0, 1.1, 1.2</td> + </tr> + <tr> + <td>AMQP</td> + <td style="text-align: center">✅</td> + <td>1.0</td> + </tr> + <tr> + <td>MQTT</td> + <td style="text-align: center">✅</td> + <td>3.1</td> + </tr> + <tr> + <td>REST</td> + <td style="text-align: center">✅</td> + <td> </td> + </tr> + </tbody> +</table> + +<h3 id="general">General</h3> + +<table> + <thead> + <tr> + <th>Feature</th> + <th style="text-align: center">Artemis Support</th> + <th>JIRA</th> + <th>Notes</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="broker-camel-component">Broker Camel Component</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="https://github.com/apache/activemq-artemis/tree/master/examples/features/standard/camel">example</a></td> + </tr> + <tr> + <td><a href="discovery">Discovery</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/using-jms">UDP multicast & JGroups</a></td> + </tr> + <tr> + <td><a href="enterprise-integration-patterns">Enterprise Integration Patterns</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>see “Broker Camel Component”</td> + </tr> + <tr> + <td><a href="horizontal-scaling">Horizontal Scaling</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>supported via <a href="components/artemis/documentation/latest/clusters">clustering</a> or <a href="components/artemis/documentation/latest/federation">federation</a></td> + </tr> + <tr> + <td><a href="jmsxuserid">JMSXUserID</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="activemq.apache.org/components/artemis/documentation/latest/security.html#tracking-the-validated-user">documentation</a></td> + </tr> + <tr> + <td><a href="jmx">JMX</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/management">documentation</a></td> + </tr> + <tr> + <td><a href="logging-a-warning-if-you-forget-to-start-a-connection">Logging a warning if you forget to start a connection</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td> </td> + </tr> + <tr> + <td><a href="mdc-logging">MDC Logging</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td> </td> + </tr> + <tr> + <td><a href="scaling-the-depth-of-a-queue">Scaling the depth of a queue</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/paging">documentation</a></td> + </tr> + <tr> + <td><a href="uri-protocols">URI Protocols</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/using-jms">vm, tcp, udp, jgroups</a></td> + </tr> + <tr> + <td><a href="the-proxy-connector">Proxy Connector</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td> </td> + </tr> + <tr> + <td><a href="unix-shell-script">Unix Shell Script</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td> </td> + </tr> + </tbody> +</table> + +<h3 id="clustering">Clustering</h3> + +<table> + <thead> + <tr> + <th>Feature</th> + <th style="text-align: center">Artemis Support</th> + <th>JIRA</th> + <th>Notes</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="masterslave">Master-slave</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>using JDBC, shared filesystem, & replication; <a href="components/artemis/documentation/latest/ha">documentation</a></td> + </tr> + <tr> + <td><a href="networks-of-brokers">Network of brokers</a></td> + <td style="text-align: center">✅</td> + <td><a href="https://issues.apache.org/jira/browse/ARTEMIS-2265">ARTEMIS-2265</a></td> + <td>equivalent through <a href="components/artemis/documentation/latest/clusters">clustering</a> or <a href="components/artemis/documentation/latest/federation">federation</a></td> + </tr> + <tr> + <td><a href="replicated-message-store">Replicated message store</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>equivalent via <a href="components/artemis/documentation/latest/ha">replication</a> HA config</td> + </tr> + </tbody> +</table> + +<h3 id="consumer-features">Consumer Features</h3> + +<table> + <thead> + <tr> + <th>Feature</th> + <th style="text-align: center">Artemis Support</th> + <th>JIRA</th> + <th>Notes</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="consumer-dispatch-async">Consumer Dispatch Async</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/configuring-transports.html#configuring-netty-tcp">equivalent via the <code class="highlighter-rouge">directDeliver</code> URL parameter</a></td> + </tr> + <tr> + <td><a href="consumer-priority">Consumer Priority</a></td> + <td style="text-align: center">✅</td> + <td><a href="https://issues.apache.org/jira/browse/ARTEMIS-196">ARTEMIS-196</a></td> + <td><a href="components/artemis/documentation/latest/consumer-priority">documentation</a></td> + </tr> + <tr> + <td><a href="exclusive-consumer">Exclusive Consumer</a></td> + <td style="text-align: center">✅</td> + <td><a href="https://issues.apache.org/jira/browse/ARTEMIS-853">ARTEMIS-853</a></td> + <td><a href="components/artemis/documentation/latest/exclusive-queues">documentation</a></td> + </tr> + <tr> + <td><a href="manage-durable-subscribers">Manage Durable Subscribers</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/address-model.html#configuring-addresses-and-queues-via-address-settings">equivalent via the <code class="highlighter-rouge">expiry-delay</code> address setting</a></td> + </tr> + <tr> + <td><a href="message-groups">Message Groups</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/message-grouping">documentation</a></td> + </tr> + <tr> + <td><a href="redelivery-policy">Redelivery Policy</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/undelivered-messages">documentation</a></td> + </tr> + <tr> + <td><a href="retroactive-consumer">Retroactive Consumer</a></td> + <td style="text-align: center">✅</td> + <td><a href="https://issues.apache.org/jira/browse/ARTEMIS-2504">ARTEMIS-2504</a></td> + <td>documentation coming in 2.11</td> + </tr> + <tr> + <td><a href="selectors">Selectors</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/filter-expressions">documentation</a></td> + </tr> + <tr> + <td><a href="slow-consumer-handling">Slow Consumer Handling</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/slow-consumers">documentation</a></td> + </tr> + <tr> + <td><a href="subscription-recovery-policy">Subscription Recovery Policy</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td>rough equivalent via retroactive addresses and <a href="components/artemis/documentation/latest/last-value-queues">last value queues</a></td> + </tr> + </tbody> +</table> <h3 id="destination-features">Destination Features</h3> -<ul> - <li>Destination Policy: Garbage collection and advisory support for that activity <a href="https://issues.apache.org/jira/browse/ARTEMIS-1148">ARTEMIS-1148</a></li> - <li>Exclusive consumer support <a href="https://issues.apache.org/jira/browse/ARTEMIS-854">ARTEMIS-854</a></li> - <li>Exclusive consumer features: consumersBeforeDispatchStarts, timeBeforeDispatchStarts <a href="https://issues.apache.org/jira/browse/ARTEMIS-856">ARTEMIS-856</a></li> -</ul> - -<h3 id="plugin-support">Plugin Support</h3> - -<ul> - <li>Destination Policies (there is a slew of functionality in ActiveMQ 5.x dest policies that should be detailed out)</li> -</ul> - -<h3 id="storage-backend">Storage Backend</h3> - -<ul> - <li>Support for multiple shared persistence stores similar to multi-kahadb (allow for storage across multiple disk volumes.. ie. queue://ORDER.> on /mnt/order queue://BILLING.> on /mnt/billing, etc) <a href="https://issues.apache.org/jira/browse/ARTEMIS-839">ARTEMIS-839</a></li> -</ul> +<table> + <thead> + <tr> + <th>Feature</th> + <th style="text-align: center">Artemis Support</th> + <th>JIRA</th> + <th>Notes</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="composite-destinations">Composite Destinations</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>supported for OpenWire clients; see also <a href="components/artemis/documentation/latest/diverts">diverts</a></td> + </tr> + <tr> + <td><a href="configure-startup-destinations">Configure Startup Destinations</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td> </td> + </tr> + <tr> + <td><a href="delete-inactive-destinations">Delete Inactive Destinations</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td> </td> + </tr> + <tr> + <td><a href="destination-options">Destination Options</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td> </td> + </tr> + <tr> + <td><a href="mirrored-queues">Mirrored Queues</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td>rough equivalent via non-exclusive <a href="components/artemis/documentation/latest/diverts">diverts</a></td> + </tr> + <tr> + <td><a href="per-destination-policies">Per Destination Policies</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>config via <code class="highlighter-rouge">address-settings</code></td> + </tr> + <tr> + <td><a href="virtual-destinations">Virtual Destinations</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/openwire.html#virtual-topic-consumer-destination-translation">docs</a> for backwards compatibility with OpenWire clients</td> + </tr> + <tr> + <td><a href="wildcards">Wildcards</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/wildcard-syntax">documentation</a></td> + </tr> + </tbody> +</table> + +<h3 id="interceptors">Interceptors</h3> + +<table> + <thead> + <tr> + <th>Feature</th> + <th style="text-align: center">Artemis Support</th> + <th>JIRA</th> + <th>Notes</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="destinations-plugin">Destinations Plugin</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="activemq.apache.org/components/artemis/documentation/latest/broker-plugins">documentation</a></td> + </tr> + <tr> + <td><a href="logging-interceptor">Logging Interceptor</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/broker-plugins.html#using-the-loggingactivemqserverplugin">documentation</a></td> + </tr> + <tr> + <td><a href="statisticsplugin">StatisticsPlugin</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>equivalent via <a href="activemq.apache.org/components/artemis/documentation/latest/management.html#using-management-message-api">management messages</a></td> + </tr> + <tr> + <td><a href="timestampplugin">TimeStampPlugin</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td> </td> + </tr> + </tbody> +</table> + +<h3 id="message-dispatching-features">Message Dispatching Features</h3> + +<table> + <thead> + <tr> + <th>Feature</th> + <th style="text-align: center">Artemis Support</th> + <th>JIRA</th> + <th>Notes</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="async-sends">Async Sends</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>supported for OpenWire & also for core (via <code class="highlighter-rouge">blockOnDurableSend</code> and <code class="highlighter-rouge">blockOnNonDurableSend</code> URL parameters)</td> + </tr> + <tr> + <td><a href="dispatch-policies">Dispatch Policies</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td> </td> + </tr> + <tr> + <td><a href="message-cursors">Message Cursors</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>equivalent via <a href="components/artemis/documentation/latest/paging">paging</a></td> + </tr> + <tr> + <td><a href="optimized-acknowledgement">Optimized Acknowledgement</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>supported for OpenWire & core as well via <code class="highlighter-rouge">ackBatchSize</code> URL parameter</td> + </tr> + <tr> + <td><a href="producer-flow-control">Producer Flow Control</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/flow-control">documentation</a></td> + </tr> + <tr> + <td><a href="total-ordering">Total Ordering</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td> </td> + </tr> + </tbody> +</table> + +<h3 id="message-features">Message Features</h3> + +<table> + <thead> + <tr> + <th>Feature</th> + <th style="text-align: center">Artemis Support</th> + <th>JIRA</th> + <th>Notes</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="activemq-message-properties">ActiveMQ Message Properties</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td> </td> + </tr> + <tr> + <td><a href="advisory-message">Advisory Message</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>equivalent support via <a href="components/artemis/documentation/latest/management.html#management-notifications">management notifications</a></td> + </tr> + <tr> + <td><a href="blob-messages">Blob Messages</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>arbitrarily <a href="components/artemis/documentation/latest/large-messages">large messages</a> supported</td> + </tr> + <tr> + <td><a href="delay-and-schedule-message-delivery">Delay and Schedule Message Delivery</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/scheduled-messages">documentation</a></td> + </tr> + <tr> + <td><a href="message-transformation">Message Transformation</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>supported via transformers and <a href="components/artemis/documentation/latest/intercepting-operations">remoting interceptors</a></td> + </tr> + <tr> + <td><a href="objectmessage">ObjectMessage</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/security.html#controlling-jms-objectmessage-deserialization">documentation</a></td> + </tr> + <tr> + <td><a href="structured-message-properties-and-mapmessages">Structured Message Properties and MapMessages</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td> </td> + </tr> + </tbody> +</table> + +<h3 id="persistence">Persistence</h3> + +<table> + <thead> + <tr> + <th>Feature</th> + <th style="text-align: center">Artemis Support</th> + <th>JIRA</th> + <th>Notes</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="amq-message-store">AMQ Message Store</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>equivalent functionality via <a href="components/artemis/documentation/latest/persistence">journal</a></td> + </tr> + <tr> + <td><a href="configurable-ioexception-handling">Configurable IOException Handling</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td>all IO errors considered critical</td> + </tr> + <tr> + <td><a href="jdbc-support">JDBC Support</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td> </td> + </tr> + <tr> + <td><a href="kahadb">KahaDB</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>equivalent functionality via <a href="components/artemis/documentation/latest/persistence">journal</a></td> + </tr> + <tr> + <td><a href="kaha-persistence">Kaha Persistence</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>equivalent functionality via <a href="components/artemis/documentation/latest/persistence">journal</a></td> + </tr> + <tr> + <td><a href="periodically-checking-disk-limits">Periodically checking disk limits</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td> </td> + </tr> + <tr> + <td><a href="pluggable-storage-lockers">Pluggable storage lockers</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td> </td> + </tr> + <tr> + <td><a href="replicated-Persistenceleveldb-store">Replicated LevelDB Store</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td>equivalent functionality via <a href="components/artemis/documentation/latest/ha">journal replication HA config</a></td> + </tr> + <tr> + <td><a href="https://activemq.apache.org/kahadb">Multi-kahaDB</a></td> + <td style="text-align: center">❌</td> + <td><a href="https://issues.apache.org/jira/browse/ARTEMIS-839">ARTEMIS-839</a></td> + <td> </td> + </tr> + </tbody> +</table> + +<h3 id="security">Security</h3> + +<table> + <thead> + <tr> + <th>Feature</th> + <th style="text-align: center">Artemis Support</th> + <th>JIRA</th> + <th>Notes</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="audit-logging">Audit Logging</a></td> + <td style="text-align: center">✅</td> + <td><a href="https://issues.apache.org/jira/browse/ARTEMIS-2273">ARTEMIS-2273</a></td> + <td><a href="components/artemis/documentation/latest/logging.html#configuring-audit-log">documentation</a></td> + </tr> + <tr> + <td><a href="cached-ldap-authorization-module">Cached LDAP Authorization Module</a></td> + <td style="text-align: center">✅</td> + <td><a href="https://issues.apache.org/jira/browse/ARTEMIS-168">ARTEMIS-168</a></td> + <td><a href="components/artemis/documentation/latest/security.html#legacyldapsecuritysettingplugin">documentation</a></td> + </tr> + <tr> + <td><a href="encrypted-passwords">Encrypted passwords</a></td> + <td style="text-align: center">✅</td> + <td> </td> + <td><a href="components/artemis/documentation/latest/masking-passwords">documentation</a></td> + </tr> + <tr> + <td><a href="shiro">Shiro</a></td> + <td style="text-align: center">❌</td> + <td> </td> + <td>equivalent functionality available via JAAS</td> + </tr> + </tbody> +</table> <h1 id="migration">Migration</h1> <p>This section should help to answer the end user question, <em>‘How do I migrate from ActiveMQ 5.x to Artemis?’</em>. This should include the identification of any tools that can help make this easier, as well as documenting information and procedures specific to migrating.</p> -<h1 id="wishlist">Wishlist</h1> - -<h3 id="protocol-features">Protocol features</h3> - -<ul> - <li>Exclusive consumer support across all protocols STOMP, MQTT, AMQP, etc. <a href="https://issues.apache.org/jira/browse/ARTEMIS-855">ARTEMIS-855</a></li> -</ul> - -<h3 id="kahadb-migration-tool">KahaDB Migration Tool</h3> - <ul> - <li>Support exporting messages from KahaDB format to Artemis</li> + <li><a href="components/artemis/migration">Migration Guide</a></li> + <li>Export messages from KahaDB using <a href="https://github.com/apache/activemq-cli-tools/tree/master/activemq-kahadb-exporter">this tool</a>. The exported XML can be imported via the <code class="highlighter-rouge">./artemis data imp</code> command.</li> + <li>For non-standard backends (where direct export isn’t an option) follow <a href="https://github.com/apache/activemq-artemis/tree/master/examples/features/sub-modules/inter-broker-bridge/artemis-jms-bridge">this example</a> to migrate messages from ActiveMQ 5.x to Artemis over the wire.</li> </ul> -<h3 id="over-the-wire-migration-tool">Over-the-wire migration tool</h3> - -<ul> - <li>Support a tool for migrating messages from ActiveMQ 5.x brokers to Artemis-based brokers (for non-standard backends) - <ul> - <li>Goal: preserve messageId</li> - </ul> - </li> -</ul> - - </div> </div> </div> diff --git a/src/activemq-artemis-roadmap.md b/src/activemq-artemis-roadmap.md index 4b386f5..6325e31 100644 --- a/src/activemq-artemis-roadmap.md +++ b/src/activemq-artemis-roadmap.md @@ -1,83 +1,146 @@ --- layout: default_md -title: ActiveMQ Artemis Roadmap +title: ActiveMQ Artemis Roadmap to 6.0 title-class: page-title-activemq5 type: activemq5 --- -[ActiveMQ Artemis Roadmap](activemq-artemis-roadmap) - - -The goal of this page is to identify the outstanding issues that must be addressed by Artemis in order to achieve some level of feature parity with ActiveMQ 5.x. The overall objective for working toward feature parity between ActiveMQ 5.x and Artemis is for Artemis to eventually become ActiveMQ 6.x. This page exists so that we can work together as a group to achieve this goal. +The goal of this page is to identify the outstanding issues that must be addressed by Artemis in order to achieve some level of feature parity with ActiveMQ 5.x. The overall objective for working toward feature parity between ActiveMQ 5.x and Artemis is for Artemis to eventually become ActiveMQ 6.x. 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 5.x. > **Work in Progress** > > This page is a work in progress and will be updated frequently. -Using this page -=============== - -Feature items can be listed, with links to JIRA tickets for longer conversation and hashing out specific feature details - Features/Scenarios ================== -This section should be used to identify all the ActiveMQ 5.x features that Artemis needs. This should include **all** Artemis features that we can identify, including those from ActiveMQ that Artemis has already implemented. This will help us to more clearly track everything that Artemis needs. - -### Advisory Support - -* Support for broker state change advisories (master -> slave, slave -> master) -* Support for connection advisories (connect, disconnect, unclean disconnect, authn fail, authz fail) -* Support for consumer advisories (new consumer, closed, slow consumer) -* Support for producer advisories (new producer, closed, fast producer, message size exceeded, memoryLimit reached, storage limit reached) -* Support for destination advisories (new dest, deleted) - -### Broker Clustering - -* Support full-duplex broker-to-broker cluster connections [ARTEMIS-838](https://issues.apache.org/jira/browse/ARTEMIS-838) - -### ActiveMQ 5.x Client Compatibility - -* Full support of Openwire (TODO: specifically, which versions) -* PooledConnectionFactory - -### Destination Interceptors - -* Virtual Topic support [ARTEMIS-550](https://issues.apache.org/jira/browse/ARTEMIS-550) +This section should be used to compare what features from ActiveMQ 5.x 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 ActiveMQ 5.x features was taken from the [5.x features page](features). + +Keep in mind that not every feature must have an ✅. Artemis may still be ready to become ActiveMQ 6.0 even if a feature on this page still has an ❌ if that feature is deemed low priority. Artemis is not meant to be a 100% complete reimplementation of ActiveMQ 5.x. 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](broker-camel-component)|✅||[example](https://github.com/apache/activemq-artemis/tree/master/examples/features/standard/camel)| +|[Discovery](discovery)|✅||[UDP multicast & JGroups](components/artemis/documentation/latest/using-jms)| +|[Enterprise Integration Patterns](enterprise-integration-patterns)|✅||see "Broker Camel Component"| +|[Horizontal Scaling](horizontal-scaling)|✅||supported via [clustering](components/artemis/documentation/latest/clusters) or [federation](components/artemis/documentation/latest/federation)| +|[JMSXUserID](jmsxuserid)|✅||[documentation](activemq.apache.org/components/artemis/documentation/latest/security.html#tracking-the-validated-user)| +|[JMX](jmx)|✅||[documentation](components/artemis/documentation/latest/management)| +|[Logging a warning if you forget to start a connection](logging-a-warning-if-you-forget-to-start-a-connection)|❌||| +|[MDC Logging](mdc-logging)|❌||| +|[Scaling the depth of a queue](scaling-the-depth-of-a-queue)|✅||[documentation](components/artemis/documentation/latest/paging)| +|[URI Protocols](uri-protocols)|✅||[vm, tcp, udp, jgroups](components/artemis/documentation/latest/using-jms)| +|[Proxy Connector](the-proxy-connector)|❌||| +|[Unix Shell Script](unix-shell-script)|✅||| + +### Clustering + +|Feature|Artemis Support|JIRA|Notes| +|---|:---:|---|---| +|[Master-slave](masterslave)|✅||using JDBC, shared filesystem, & replication; [documentation](components/artemis/documentation/latest/ha)| +|[Network of brokers](networks-of-brokers)|✅|[ARTEMIS-2265](https://issues.apache.org/jira/browse/ARTEMIS-2265)|equivalent through [clustering](components/artemis/documentation/latest/clusters) or [federation](components/artemis/documentation/latest/federation)| +|[Replicated message store](replicated-message-store)|✅||equivalent via [replication](components/artemis/documentation/latest/ha) HA config| + +### Consumer Features + +|Feature|Artemis Support|JIRA|Notes| +|---|:---:|---|---| +|[Consumer Dispatch Async](consumer-dispatch-async)|✅||[equivalent via the `directDeliver` URL parameter](components/artemis/documentation/latest/configuring-transports.html#configuring-netty-tcp)| +|[Consumer Priority](consumer-priority)|✅|[ARTEMIS-196](https://issues.apache.org/jira/browse/ARTEMIS-196)|[documentation](components/artemis/documentation/latest/consumer-priority)| +|[Exclusive Consumer](exclusive-consumer)|✅|[ARTEMIS-853](https://issues.apache.org/jira/browse/ARTEMIS-853)|[documentation](components/artemis/documentation/latest/exclusive-queues)| +|[Manage Durable Subscribers](manage-durable-subscribers)|✅||[equivalent via the `expiry-delay` address setting](components/artemis/documentation/latest/address-model.html#configuring-addresses-and-queues-via-address-settings)| +|[Message Groups](message-groups)|✅||[documentation](components/artemis/documentation/latest/message-grouping)| +|[Redelivery Policy](redelivery-policy)|✅||[documentation](components/artemis/documentation/latest/undelivered-messages)| +|[Retroactive Consumer](retroactive-consumer)|✅|[ARTEMIS-2504](https://issues.apache.org/jira/browse/ARTEMIS-2504)|documentation coming in 2.11| +|[Selectors](selectors)|✅||[documentation](components/artemis/documentation/latest/filter-expressions)| +|[Slow Consumer Handling](slow-consumer-handling)|✅||[documentation](components/artemis/documentation/latest/slow-consumers)| +|[Subscription Recovery Policy](subscription-recovery-policy)|❌||rough equivalent via retroactive addresses and [last value queues](components/artemis/documentation/latest/last-value-queues)| ### Destination Features -* Destination Policy: Garbage collection and advisory support for that activity [ARTEMIS-1148](https://issues.apache.org/jira/browse/ARTEMIS-1148) -* Exclusive consumer support [ARTEMIS-854](https://issues.apache.org/jira/browse/ARTEMIS-854) -* Exclusive consumer features: consumersBeforeDispatchStarts, timeBeforeDispatchStarts [ARTEMIS-856](https://issues.apache.org/jira/browse/ARTEMIS-856) - -### Plugin Support - -* Destination Policies (there is a slew of functionality in ActiveMQ 5.x dest policies that should be detailed out) - -### Storage Backend - -* Support for multiple shared persistence stores similar to multi-kahadb (allow for storage across multiple disk volumes.. ie. queue://ORDER.> on /mnt/order queue://BILLING.> on /mnt/billing, etc) [ARTEMIS-839](https://issues.apache.org/jira/browse/ARTEMIS-839) +|Feature|Artemis Support|JIRA|Notes| +|---|:---:|---|---| +|[Composite Destinations](composite-destinations)|✅||supported for OpenWire clients; see also [diverts](components/artemis/documentation/latest/diverts)| +|[Configure Startup Destinations](configure-startup-destinations)|✅||| +|[Delete Inactive Destinations](delete-inactive-destinations)|❌||| +|[Destination Options](destination-options)|✅||| +|[Mirrored Queues](mirrored-queues)|❌||rough equivalent via non-exclusive [diverts](components/artemis/documentation/latest/diverts)| +|[Per Destination Policies](per-destination-policies)|✅||config via `address-settings`| +|[Virtual Destinations](virtual-destinations)|✅||[docs](components/artemis/documentation/latest/openwire.html#virtual-topic-consumer-destination-translation) for backwards compatibility with OpenWire clients| +|[Wildcards](wildcards)|✅||[documentation](components/artemis/documentation/latest/wildcard-syntax)| + +### Interceptors + +|Feature|Artemis Support|JIRA|Notes| +|---|:---:|---|---| +|[Destinations Plugin](destinations-plugin)|✅||[documentation](activemq.apache.org/components/artemis/documentation/latest/broker-plugins)| +|[Logging Interceptor](logging-interceptor)|✅||[documentation](components/artemis/documentation/latest/broker-plugins.html#using-the-loggingactivemqserverplugin)| +|[StatisticsPlugin](statisticsplugin)|✅||equivalent via [management messages](activemq.apache.org/components/artemis/documentation/latest/management.html#using-management-message-api)| +|[TimeStampPlugin](timestampplugin)|❌||| + +### Message Dispatching Features + +|Feature|Artemis Support|JIRA|Notes| +|---|:---:|---|---| +|[Async Sends](async-sends)|✅||supported for OpenWire & also for core (via `blockOnDurableSend` and `blockOnNonDurableSend` URL parameters)| +|[Dispatch Policies](dispatch-policies)|❌||| +|[Message Cursors](message-cursors)|✅||equivalent via [paging](components/artemis/documentation/latest/paging)| +|[Optimized Acknowledgement](optimized-acknowledgement)|✅||supported for OpenWire & core as well via `ackBatchSize` URL parameter| +|[Producer Flow Control](producer-flow-control)|✅||[documentation](components/artemis/documentation/latest/flow-control)| +|[Total Ordering](total-ordering)|❌||| + +### Message Features + +|Feature|Artemis Support|JIRA|Notes| +|---|:---:|---|---| +|[ActiveMQ Message Properties](activemq-message-properties)|✅||| +|[Advisory Message](advisory-message)|✅||equivalent support via [management notifications](components/artemis/documentation/latest/management.html#management-notifications)| +|[Blob Messages](blob-messages)|✅||arbitrarily [large messages](components/artemis/documentation/latest/large-messages) supported| +|[Delay and Schedule Message Delivery](delay-and-schedule-message-delivery)|✅||[documentation](components/artemis/documentation/latest/scheduled-messages)| +|[Message Transformation](message-transformation)|✅||supported via transformers and [remoting interceptors](components/artemis/documentation/latest/intercepting-operations)| +|[ObjectMessage](objectmessage)|✅||[documentation](components/artemis/documentation/latest/security.html#controlling-jms-objectmessage-deserialization)| +|[Structured Message Properties and MapMessages](structured-message-properties-and-mapmessages)|❌||| + +### Persistence + +|Feature|Artemis Support|JIRA|Notes| +|---|:---:|---|---| +|[AMQ Message Store](amq-message-store)|✅||equivalent functionality via [journal](components/artemis/documentation/latest/persistence)| +|[Configurable IOException Handling](configurable-ioexception-handling)|❌||all IO errors considered critical| +|[JDBC Support](jdbc-support)|✅||| +|[KahaDB](kahadb)|✅||equivalent functionality via [journal](components/artemis/documentation/latest/persistence)| +|[Kaha Persistence](kaha-persistence)|✅||equivalent functionality via [journal](components/artemis/documentation/latest/persistence)| +|[Periodically checking disk limits](periodically-checking-disk-limits)|✅||| +|[Pluggable storage lockers](pluggable-storage-lockers)|❌||| +|[Replicated LevelDB Store](replicated-Persistenceleveldb-store)|✅||equivalent functionality via [journal replication HA config](components/artemis/documentation/latest/ha)| +|[Multi-kahaDB](https://activemq.apache.org/kahadb)|❌|[ARTEMIS-839](https://issues.apache.org/jira/browse/ARTEMIS-839)|| + +### Security + +|Feature|Artemis Support|JIRA|Notes| +|---|:---:|---|---| +|[Audit Logging](audit-logging)|✅|[ARTEMIS-2273](https://issues.apache.org/jira/browse/ARTEMIS-2273)|[documentation](components/artemis/documentation/latest/logging.html#configuring-audit-log)| +|[Cached LDAP Authorization Module](cached-ldap-authorization-module)|✅|[ARTEMIS-168](https://issues.apache.org/jira/browse/ARTEMIS-168)|[documentation](components/artemis/documentation/latest/security.html#legacyldapsecuritysettingplugin)| +|[Encrypted passwords](encrypted-passwords)|✅||[documentation](components/artemis/documentation/latest/masking-passwords)| +|[Shiro](shiro)|❌||equivalent functionality available via JAAS| Migration ========= This section should help to answer the end user question, _'How do I migrate from ActiveMQ 5.x 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. -Wishlist -======== - -### Protocol features - -* Exclusive consumer support across all protocols STOMP, MQTT, AMQP, etc. [ARTEMIS-855](https://issues.apache.org/jira/browse/ARTEMIS-855) - - -### KahaDB Migration Tool - -* Support exporting messages from KahaDB format to Artemis - -### Over-the-wire migration tool - -* Support a tool for migrating messages from ActiveMQ 5.x brokers to Artemis-based brokers (for non-standard backends) - * Goal: preserve messageId - +* [Migration Guide](components/artemis/migration) +* Export messages from KahaDB using [this tool](https://github.com/apache/activemq-cli-tools/tree/master/activemq-kahadb-exporter). 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](https://github.com/apache/activemq-artemis/tree/master/examples/features/sub-modules/inter-broker-bridge/artemis-jms-bridge) to migrate messages from ActiveMQ 5.x to Artemis over the wire.
