blob: bdc09ad00c5ace6f841aa020f5a8108159e4c017 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Versions ยท ActiveMQ Artemis Documentation</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<link rel="stylesheet" href="gitbook/style.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-search/search.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="messaging-concepts.html" />
<link rel="prev" href="project-info.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="chapter " data-level="1.1" data-path="./">
<a href="./">
Introduction
</a>
</li>
<li class="chapter " data-level="1.2" data-path="notice.html">
<a href="notice.html">
Legal Notice
</a>
</li>
<li class="chapter " data-level="1.3" data-path="preface.html">
<a href="preface.html">
Preface
</a>
</li>
<li class="chapter " data-level="1.4" data-path="project-info.html">
<a href="project-info.html">
Project Info
</a>
</li>
<li class="chapter active" data-level="1.5" data-path="versions.html">
<a href="versions.html">
Versions
</a>
</li>
<li class="chapter " data-level="1.6" data-path="messaging-concepts.html">
<a href="messaging-concepts.html">
Messaging Concepts
</a>
</li>
<li class="chapter " data-level="1.7" data-path="architecture.html">
<a href="architecture.html">
Architecture
</a>
</li>
<li class="chapter " data-level="1.8" data-path="using-server.html">
<a href="using-server.html">
Using the Server
</a>
</li>
<li class="chapter " data-level="1.9" data-path="upgrading.html">
<a href="upgrading.html">
Upgrading
</a>
</li>
<li class="chapter " data-level="1.10" >
<span>
Address
</span>
<ul class="articles">
<li class="chapter " data-level="1.10.1" data-path="address-model.html">
<a href="address-model.html">
Model
</a>
</li>
<li class="chapter " data-level="1.10.2" data-path="address-settings.html">
<a href="address-settings.html">
Settings
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.11" data-path="protocols-interoperability.html">
<a href="protocols-interoperability.html">
Protocols and Interoperability
</a>
</li>
<li class="chapter " data-level="1.12" data-path="amqp.html">
<a href="amqp.html">
AMQP
</a>
<ul class="articles">
<li class="chapter " data-level="1.12.1" data-path="amqp-broker-connections.html">
<a href="amqp-broker-connections.html">
Broker Connections
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.13" data-path="mqtt.html">
<a href="mqtt.html">
MQTT
</a>
</li>
<li class="chapter " data-level="1.14" data-path="stomp.html">
<a href="stomp.html">
STOMP
</a>
</li>
<li class="chapter " data-level="1.15" data-path="openwire.html">
<a href="openwire.html">
OpenWire
</a>
</li>
<li class="chapter " data-level="1.16" data-path="core.html">
<a href="core.html">
Core
</a>
</li>
<li class="chapter " data-level="1.17" data-path="jms-core-mapping.html">
<a href="jms-core-mapping.html">
Mapping JMS Concepts to the Core API
</a>
</li>
<li class="chapter " data-level="1.18" data-path="using-jms.html">
<a href="using-jms.html">
Using JMS
</a>
</li>
<li class="chapter " data-level="1.19" data-path="client-classpath.html">
<a href="client-classpath.html">
The Client Classpath
</a>
<ul class="articles">
<li class="chapter " data-level="1.19.1" data-path="client-classpath-jms.html">
<a href="client-classpath-jms.html">
JMS
</a>
</li>
<li class="chapter " data-level="1.19.2" data-path="client-classpath-jakarta.html">
<a href="client-classpath-jakarta.html">
Jakarta
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.20" data-path="examples.html">
<a href="examples.html">
Examples
</a>
</li>
<li class="chapter " data-level="1.21" data-path="wildcard-routing.html">
<a href="wildcard-routing.html">
Routing Messages With Wild Cards
</a>
</li>
<li class="chapter " data-level="1.22" data-path="wildcard-syntax.html">
<a href="wildcard-syntax.html">
Wildcard Syntax
</a>
</li>
<li class="chapter " data-level="1.23" data-path="filter-expressions.html">
<a href="filter-expressions.html">
Filter Expressions
</a>
</li>
<li class="chapter " data-level="1.24" data-path="persistence.html">
<a href="persistence.html">
Persistence
</a>
</li>
<li class="chapter " data-level="1.25" data-path="configuring-transports.html">
<a href="configuring-transports.html">
Configuring Transports
</a>
</li>
<li class="chapter " data-level="1.26" data-path="config-reload.html">
<a href="config-reload.html">
Configuration Reload
</a>
</li>
<li class="chapter " data-level="1.27" data-path="connection-ttl.html">
<a href="connection-ttl.html">
Detecting Dead Connections
</a>
</li>
<li class="chapter " data-level="1.28" data-path="slow-consumers.html">
<a href="slow-consumers.html">
Detecting Slow Consumers
</a>
</li>
<li class="chapter " data-level="1.29" data-path="network-isolation.html">
<a href="network-isolation.html">
Avoiding Network Isolation
</a>
</li>
<li class="chapter " data-level="1.30" data-path="critical-analysis.html">
<a href="critical-analysis.html">
Detecting Broker Issues (Critical Analysis)
</a>
</li>
<li class="chapter " data-level="1.31" data-path="transaction-config.html">
<a href="transaction-config.html">
Resource Manager Configuration
</a>
</li>
<li class="chapter " data-level="1.32" data-path="flow-control.html">
<a href="flow-control.html">
Flow Control
</a>
</li>
<li class="chapter " data-level="1.33" data-path="send-guarantees.html">
<a href="send-guarantees.html">
Guarantees of sends and commits
</a>
</li>
<li class="chapter " data-level="1.34" data-path="undelivered-messages.html">
<a href="undelivered-messages.html">
Message Redelivery and Undelivered Messages
</a>
</li>
<li class="chapter " data-level="1.35" data-path="message-expiry.html">
<a href="message-expiry.html">
Message Expiry
</a>
</li>
<li class="chapter " data-level="1.36" data-path="large-messages.html">
<a href="large-messages.html">
Large Messages
</a>
</li>
<li class="chapter " data-level="1.37" data-path="paging.html">
<a href="paging.html">
Paging
</a>
</li>
<li class="chapter " data-level="1.38" data-path="scheduled-messages.html">
<a href="scheduled-messages.html">
Scheduled Messages
</a>
</li>
<li class="chapter " data-level="1.39" data-path="last-value-queues.html">
<a href="last-value-queues.html">
Last-Value Queues
</a>
</li>
<li class="chapter " data-level="1.40" data-path="non-destructive-queues.html">
<a href="non-destructive-queues.html">
Non-Destructive Queues
</a>
</li>
<li class="chapter " data-level="1.41" data-path="ring-queues.html">
<a href="ring-queues.html">
Ring Queues
</a>
</li>
<li class="chapter " data-level="1.42" data-path="retroactive-addresses.html">
<a href="retroactive-addresses.html">
Retroactive Addresses
</a>
</li>
<li class="chapter " data-level="1.43" data-path="exclusive-queues.html">
<a href="exclusive-queues.html">
Exclusive Queues
</a>
</li>
<li class="chapter " data-level="1.44" data-path="message-grouping.html">
<a href="message-grouping.html">
Message Grouping
</a>
</li>
<li class="chapter " data-level="1.45" data-path="consumer-priority.html">
<a href="consumer-priority.html">
Consumer Priority
</a>
</li>
<li class="chapter " data-level="1.46" data-path="pre-acknowledge.html">
<a href="pre-acknowledge.html">
Extra Acknowledge Modes
</a>
</li>
<li class="chapter " data-level="1.47" data-path="management.html">
<a href="management.html">
Management
</a>
</li>
<li class="chapter " data-level="1.48" data-path="management-console.html">
<a href="management-console.html">
Management Console
</a>
</li>
<li class="chapter " data-level="1.49" data-path="metrics.html">
<a href="metrics.html">
Metrics
</a>
</li>
<li class="chapter " data-level="1.50" data-path="security.html">
<a href="security.html">
Security
</a>
</li>
<li class="chapter " data-level="1.51" data-path="masking-passwords.html">
<a href="masking-passwords.html">
Masking Passwords
</a>
</li>
<li class="chapter " data-level="1.52" data-path="broker-plugins.html">
<a href="broker-plugins.html">
Broker Plugins
</a>
</li>
<li class="chapter " data-level="1.53" data-path="resource-limits.html">
<a href="resource-limits.html">
Resource Limits
</a>
</li>
<li class="chapter " data-level="1.54" data-path="jms-bridge.html">
<a href="jms-bridge.html">
The JMS Bridge
</a>
</li>
<li class="chapter " data-level="1.55" data-path="client-reconnection.html">
<a href="client-reconnection.html">
Client Reconnection and Session Reattachment
</a>
</li>
<li class="chapter " data-level="1.56" data-path="diverts.html">
<a href="diverts.html">
Diverting and Splitting Message Flows
</a>
</li>
<li class="chapter " data-level="1.57" data-path="core-bridges.html">
<a href="core-bridges.html">
Core Bridges
</a>
</li>
<li class="chapter " data-level="1.58" data-path="transformers.html">
<a href="transformers.html">
Transformers
</a>
</li>
<li class="chapter " data-level="1.59" data-path="duplicate-detection.html">
<a href="duplicate-detection.html">
Duplicate Message Detection
</a>
</li>
<li class="chapter " data-level="1.60" data-path="clusters.html">
<a href="clusters.html">
Clusters
</a>
</li>
<li class="chapter " data-level="1.61" data-path="federation.html">
<a href="federation.html">
Federation
</a>
<ul class="articles">
<li class="chapter " data-level="1.61.1" data-path="federation-address.html">
<a href="federation-address.html">
Address Federation
</a>
</li>
<li class="chapter " data-level="1.61.2" data-path="federation-queue.html">
<a href="federation-queue.html">
Queue Federation
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="1.62" data-path="ha.html">
<a href="ha.html">
High Availability and Failover
</a>
</li>
<li class="chapter " data-level="1.63" data-path="connection-routers.html">
<a href="connection-routers.html">
Connection Routers
</a>
</li>
<li class="chapter " data-level="1.64" data-path="graceful-shutdown.html">
<a href="graceful-shutdown.html">
Graceful Server Shutdown
</a>
</li>
<li class="chapter " data-level="1.65" data-path="libaio.html">
<a href="libaio.html">
Libaio Native Libraries
</a>
</li>
<li class="chapter " data-level="1.66" data-path="thread-pooling.html">
<a href="thread-pooling.html">
Thread management
</a>
</li>
<li class="chapter " data-level="1.67" data-path="web-server.html">
<a href="web-server.html">
Embedded Web Server
</a>
</li>
<li class="chapter " data-level="1.68" data-path="logging.html">
<a href="logging.html">
Logging
</a>
</li>
<li class="chapter " data-level="1.69" data-path="rest.html">
<a href="rest.html">
REST Interface
</a>
</li>
<li class="chapter " data-level="1.70" data-path="embedding-activemq.html">
<a href="embedding-activemq.html">
Embedding the Broker
</a>
</li>
<li class="chapter " data-level="1.71" data-path="karaf.html">
<a href="karaf.html">
Apache Karaf
</a>
</li>
<li class="chapter " data-level="1.72" data-path="tomcat.html">
<a href="tomcat.html">
Apache Tomcat
</a>
</li>
<li class="chapter " data-level="1.73" data-path="spring-integration.html">
<a href="spring-integration.html">
Spring Integration
</a>
</li>
<li class="chapter " data-level="1.74" data-path="cdi-integration.html">
<a href="cdi-integration.html">
CDI Integration
</a>
</li>
<li class="chapter " data-level="1.75" data-path="intercepting-operations.html">
<a href="intercepting-operations.html">
Intercepting Operations
</a>
</li>
<li class="chapter " data-level="1.76" data-path="data-tools.html">
<a href="data-tools.html">
Data Tools
</a>
</li>
<li class="chapter " data-level="1.77" data-path="activation-tools.html">
<a href="activation-tools.html">
Activation Tools
</a>
</li>
<li class="chapter " data-level="1.78" data-path="maven-plugin.html">
<a href="maven-plugin.html">
Maven Plugin
</a>
</li>
<li class="chapter " data-level="1.79" data-path="unit-testing.html">
<a href="unit-testing.html">
Unit Testing
</a>
</li>
<li class="chapter " data-level="1.80" data-path="perf-tuning.html">
<a href="perf-tuning.html">
Troubleshooting and Performance Tuning
</a>
</li>
<li class="chapter " data-level="1.81" data-path="perf-tools.html">
<a href="perf-tools.html">
Performance Tools
</a>
</li>
<li class="chapter " data-level="1.82" data-path="configuration-index.html">
<a href="configuration-index.html">
Configuration Reference
</a>
</li>
<li class="chapter " data-level="1.83" data-path="restart-sequence.html">
<a href="restart-sequence.html">
Restart Sequence
</a>
</li>
<li class="divider"></li>
<li>
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
Published with GitBook
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="." >Versions</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="versions">Versions</h1>
<p>This chapter provides the following information for each release:</p>
<ul>
<li>A link to the full release notes which includes all issues resolved in the release.</li>
<li>A brief list of &quot;highlights&quot; when applicable.</li>
<li>If necessary, specific steps required when upgrading from the previous version. <ul>
<li><strong>Note:</strong> If the upgrade spans multiple versions then the steps from <strong>each</strong> version need to be followed in order.</li>
<li><strong>Note:</strong> Follow the general upgrade procedure outlined in the <a href="upgrading.html">Upgrading the Broker</a>
chapter in addition to any version-specific upgrade instructions outlined here.</li>
</ul>
</li>
</ul>
<h2 id="2240">2.24.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12351822&amp;projectId=12315920" target="_blank">Full release notes</a></p>
<p>Highlights:</p>
<ul>
<li>Streamlined page caches and files are just read into queues without the need of soft caches.</li>
</ul>
<h4 id="upgrading-from-older-versions">Upgrading from older versions</h4>
<ol>
<li>Due to <a href="https://issues.apache.org/jira/browse/ARTEMIS-3851" target="_blank">ARTEMIS-3851</a>
the queue created for an MQTT 3.x subscriber using <code>CleanSession=1</code> is now
<strong>non-durable</strong> rather than durable. This may impact <code>security-settings</code>
for MQTT clients which previously only had <code>createDurableQueue</code> for their
role. They will now need <code>createNonDurableQueue</code> as well. Again, this only
has potential impact for MQTT 3.x clients using <code>CleanSession=1</code>.</li>
<li><p>Due to <a href="https://issues.apache.org/jira/browse/ARTEMIS-3892" target="_blank">ARTEMIS-3892</a>
the username assigned to queues will be based on the <strong>validated</strong> user
rather than just the username submitted by the client application. This
will impact use-cases like the following:</p>
<ol>
<li>When <code>login.config</code> is configured with the <a href="security.html#guestloginmodule"><code>GuestLoginModule</code></a>
which causes some users to be assigned a specific username and role
during the authentication process. </li>
<li>When <code>login.config</code> is configured with the <a href="security.html#certificateloginmodule"><code>CertificateLoginModule</code></a>
which causes users to be assigned a username and role corresponding to
the subject DN from their SSL certificate.</li>
</ol>
<p>In these kinds of situations the broker will use this assigned (i.e.
validated) username for any queues created with the connection. In the past
the queue&apos;s username would have been left blank.</p>
</li>
</ol>
<h2 id="2231">2.23.1</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12351846&amp;projectId=12315920" target="_blank">Full release notes</a></p>
<p>Highlights:</p>
<ul>
<li><a href="https://issues.apache.org/jira/browse/ARTEMIS-3856" target="_blank">ARTEMIS-3856</a> - Failed to change channel state to ReadyForWriting : java.util.ConcurrentModificationException</li>
</ul>
<h2 id="2230">2.23.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12351677" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li><a href="web-server.html#management">management operations</a> for the embedded web server.</li>
<li><a href="https://issues.apache.org/jira/browse/ARTEMIS-3700" target="_blank">JakartaEE 10 Support</a></li>
<li><a href="https://issues.apache.org/jira/browse/ARTEMIS-3848" target="_blank">BugFix: High cpu usage on ReadWrite locks</a></li>
</ul>
<h2 id="2220">2.22.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12351488" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>The default <code>producer-window-size</code> on <code>cluster-connection</code> was changed to 1MB to
mitigate potential OutOfMemoryErrors in environments with with high latency
networking.</li>
</ul>
<h2 id="2210">2.21.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12351083&amp;projectId=12315920" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li><a href="mqtt.html">MQTT 5</a> is now supported.</li>
<li>A new set of <a href="perf-tools.html">performance tools</a> are now available to evaluate
throughput and Response Under Load performance of Artemis</li>
<li>Diverts now support <a href="diverts.html#composite-divert">multiple addresses</a></li>
<li><a href="config-reload.html">Runtime configuration reloading</a> now supports bridges.</li>
<li><a href="paging.html#paging-mode">Paging</a> can now be configured by message count.</li>
</ul>
<h4 id="upgrading-from-older-versions">Upgrading from older versions</h4>
<ol>
<li><p>Due to XML schema changes to correct an inaccurate domain name 2 files will need to
be updated:</p>
<ol>
<li><code>etc/bootstrap.xml</code></li>
<li><p><code>etc/management.xml</code></p>
<p>In both files change the XML namespace from <code>activemq.org</code> to <code>activemq.apache.org</code>,
e.g. in <code>bootsrap.xml</code> use:</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">broker</span> <span class="hljs-attr">xmlns</span>=<span class="hljs-string">&quot;http://activemq.apache.org/schema&quot;</span>&gt;</span>
</code></pre>
<p>And in <code>management.xml</code> use:</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">management-context</span> <span class="hljs-attr">xmlns</span>=<span class="hljs-string">&quot;http://activemq.apache.org/schema&quot;</span>&gt;</span>
</code></pre>
</li>
</ol>
</li>
<li><p><strong>If you&apos;re using <a href="persistence.html#jdbc-persistence">JDBC persistence</a></strong> then due
to the changes in <a href="https://issues.apache.org/jira/browse/ARTEMIS-3679" target="_blank">ARTEMIS-3679</a>
you&apos;ll need to update your database. The column <code>HOLDER_EXPIRATION_TIME</code> on the
<code>NODE_MANAGER_STORE</code>changed from a <code>TIMESTAMP</code> to a <code>BIGINT</code> (or <code>NUMBER(19)</code> on
Oracle). You will have to stop any broker that is accessing that table and either
drop it or execute the proper <code>ALTER TABLE</code> statement for your database. If you
drop the table then it will be automatically recreated when broker restarts and
repopulated with a new, auto-generated node ID.</p>
</li>
</ol>
<h2 id="2200">2.20.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12350581&amp;projectId=12315920" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li><strong>Java 11 is now required.</strong></li>
</ul>
<h2 id="2190">2.19.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12350519" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>New ability to replay <a href="persistence.html#journal-retention">retained journal</a>
records via the management API.</li>
<li>New environment/system property to set the &quot;key&quot; for masked passwords when
using the <a href="masking-passwords.html#the-default-codec">default codec</a>.</li>
<li>Ability to disable <a href="clusters.html#configuring-cluster-connections">message-load-balancing and still allow redistribution</a>
via the new <code>OFF_WITH_REDISTRIBUTION</code> type.</li>
<li>MQTT session state can now be cleaned up automatically to avoid excessive
accumulation in situations where client&apos;s don&apos;t clean up their own sessions.</li>
<li>Distribute full Jakarta Messaging 3.0 client in the <code>lib/client</code> directory
along with a new example of how to use it in <code>examples/features/standard/queue-jakarta</code>.</li>
</ul>
<h2 id="2180">2.18.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12349689" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li><a href="amqp-broker-connections.html#dual-mirror-disaster-recovery">Dual Mirror</a>
support improving capabilities on AMQP Mirror for Disaster Recovery</li>
<li><a href="persistence.html#journal-retention">Journal Retention</a></li>
<li><a href="ha.html#pluggable-quorum-vote-replication-configurations">Replication integrated with Zookeeper</a></li>
<li><a href="connection-routers.html">Connection Routers</a></li>
<li><a href="core-bridges.html#configuring-bridges">Concurrency</a> configuration for core
bridges.</li>
<li><a href="filter-expressions.html#xpath">XPath filter expressions</a> (for parity with
ActiveMQ &quot;Classic&quot;).</li>
</ul>
<h4 id="upgrading-from-older-versions">Upgrading from older versions</h4>
<ol>
<li><p>Due to <a href="https://issues.apache.org/jira/browse/ARTEMIS-3367" target="_blank">ARTEMIS-3367</a> the
default setting for <code>verifyHost</code> on <em>core connectors</em> has been changed from
<code>false</code> to <code>true</code>. This means that <strong>core clients will now expect the <code>CN</code> or
Subject Alternative Name values of the broker&apos;s SSL certificate to match the
hostname in the client&apos;s URL</strong>.</p>
<p>This impacts all core-based clients including core JMS clients and core
connections between cluster nodes. Although this is a &quot;breaking&quot; change, <em>not</em>
performing hostname verification is a security risk (e.g. due to man-in-the-middle
attacks). Enabling it by default aligns core client behavior with industry
standards. To deal with this you can do one of the following:</p>
<ul>
<li>Update your SSL certificates to use a hostname which matches the hostname
in the client&apos;s URL. This is the recommended option with regard to security.</li>
<li>Update any connector using <code>sslEnabled=true</code> to also use <code>verifyHost=false</code>.
Using this option means that you won&apos;t get the extra security of hostname
verification, but no certificates will need to change. This essentially
restores the previous default behavior.</li>
</ul>
<p>For additional details about please refer to section 3.1 of <a href="https://datatracker.ietf.org/doc/html/rfc2818#section-3.1" target="_blank">RFC 2818 &quot;HTTP over TLS&quot;</a>.</p>
</li>
<li><p>Due to <a href="https://issues.apache.org/jira/browse/ARTEMIS-3117" target="_blank">ARTEMIS-3117</a>
SSL keystore and truststores are no longer reloaded automatically.
Previously an instance of <code>javax.net.ssl.SSLContext</code> was created for <em>every</em>
connection. This would implicitly pick up any changes to the keystore and
truststore for any new connection. However, this was grossly inefficient and
therefore didn&apos;t scale well with lots of connections. The behavior was
changed so that just one <code>javax.net.ssl.SSLContext</code> is created for each
<code>acceptor</code>. However, one can still reload keystores &amp; truststores from disk
without restarting the broker. Simply use the <code>reload</code> management operation
on the <code>acceptor</code>. This is available via JMX, the web console, Jolokia, etc.</p>
<p>Here&apos;s an example <code>curl</code> command you can use with Jolokia to invoke the
<code>artemis</code> acceptor&apos;s <code>reload</code> operation:</p>
<pre><code class="lang-bash">curl --user admin:admin --header <span class="hljs-string">&quot;Content-Type: application/json&quot;</span> --request POST --data <span class="hljs-string">&apos;{&quot;type&quot;:&quot;exec&quot;, &quot;mbean&quot;:&quot;org.apache.activemq.artemis:broker=\&quot;0.0.0.0\&quot;,component=acceptors,name=\&quot;artemis\&quot;&quot;, &quot;operation&quot;:&quot;reload&quot;}&apos;</span> http://localhost:8161/console/jolokia/<span class="hljs-built_in">exec</span>
</code></pre>
<p>Of course you&apos;ll want to adjust the username &amp; password as well as the
broker and acceptor names for your environment.</p>
</li>
<li><p>The &quot;rate&quot; metric for queues was removed from the web console via <a href="https://issues.apache.org/jira/browse/ARTEMIS-3397" target="_blank">ARTEMIS-3397</a>.
This was a follow-up from <a href="https://issues.apache.org/jira/browse/ARTEMIS-2909" target="_blank">ARTEMIS-2909</a>
in 2.16.0 (referenced in the <a href="#2160">upgrade instructions below</a>). The
&quot;rate&quot; metric mistakenly left visible on the web console after it was
removed from the management API.</p>
</li>
<li><p>Due to <a href="https://issues.apache.org/jira/browse/ARTEMIS-3141" target="_blank">ARTEMIS-3141</a>,
<a href="https://issues.apache.org/jira/browse/ARTEMIS-3128" target="_blank">ARTEMIS-3128</a>, &amp;
<a href="https://issues.apache.org/jira/browse/ARTEMIS-3175" target="_blank">ARTEMIS-3175</a>
the data returned for any &quot;list&quot; or &quot;browse&quot; management method which return
message data, including those exposed via the web console, will have their
return data truncated by default. This is done to avoid adverse conditions
with large volumes of message data which could potentially negatively impact
broker stability. The <code>management-message-attribute-size-limit</code>
address-setting controls this behavior. If you wish to restore the previous
(and potentially dangerous behavior) then you can specify <code>-1</code> for this.
It is <code>256</code> by default.</p>
</li>
</ol>
<h2 id="2170">2.17.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12349326" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li><a href="broker-plugins.html#using-the-brokermessageauthorizationplugin">Message-level authorization</a> similar to ActiveMQ 5.x.</li>
<li>A count of addresses and queues is now available from the management API.</li>
<li>You can now reload the broker&apos;s configuration from disk via the management API rather than waiting for the periodic
disk scan to pick it up</li>
<li>Performance improvements on libaio journal.</li>
<li>New command-line option to transfer messages.</li>
<li>Performance improvements for the wildcard address manager.</li>
<li>JDBC datasource property values can now be masked.</li>
<li>Lots of usability improvements to the Hawtio 2 based web console introduced in 2.16.0</li>
<li>New management method to create a core bridge using JSON-based configuration input.</li>
<li><a href="https://blogs.apache.org/activemq/entry/activemq-artemis-embraces-jakarta-ee" target="_blank">Jakarta Messaging 2.0 &amp; 3.0 artifacts for Jakarta EE 8 &amp; 9 respectively</a>.</li>
</ul>
<h2 id="2160">2.16.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12348718" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Configurable namespace for temporary queues</li>
<li><a href="amqp-broker-connections.html">AMQP Server Connectivity</a></li>
<li>&quot;Basic&quot; <a href="security.html#basic-security-manager"><code>SecurityManager</code> implementation</a> that supports replication</li>
<li>Consumer window size support for individual STOMP clients</li>
<li>Improved JDBC connection management</li>
<li>New web console based on Hawtio 2</li>
<li>Performance optimizations (i.e. caching) for authentication and authorization</li>
<li>Support for admin objects in the JCA resource adapter to facilitate deployment into 3rd-party Java EE application servers</li>
<li>Ability to prevent an acceptor from automatically starting</li>
</ul>
<h4 id="upgrading-from-older-versions">Upgrading from older versions</h4>
<ol>
<li><p>Due to <a href="https://issues.apache.org/jira/browse/ARTEMIS-2893" target="_blank">ARTEMIS-2893</a> the
fundamental way user management was implemented had to change to avoid data
integrity issues related to concurrent modification. From a user&apos;s perspective
two main things changed:</p>
<ol>
<li>User management is no longer possible using the <code>artemis user</code> commands
when the broker is <strong>offline</strong>. Of course users are still free to modify the
properties files directly in this situation.</li>
<li><p>The parameters of the <code>artemis user</code> commands changed. Instead of using
something like this:</p>
<pre><code class="lang-sh">./artemis user add --user guest --password guest --role admin
</code></pre>
<p>Use this instead:</p>
<pre><code class="lang-sh">./artemis user add --user-command-user guest --user-command-password guest --role admin
</code></pre>
<p>In short, use <code>user-command-user</code> in lieu of <code>user</code> and <code>user-command-password</code>
in lieu of <code>password</code>. Both <code>user</code> and <code>password</code> parameters now apply to the
connection used to send the command to the broker.</p>
<p>For additional details see <a href="https://issues.apache.org/jira/browse/ARTEMIS-2893" target="_blank">ARTEMIS-2893</a>
and <a href="https://issues.apache.org/jira/browse/ARTEMIS-3010" target="_blank">ARTEMIS-3010</a></p>
</li>
</ol>
</li>
<li><p>Due to <a href="https://issues.apache.org/jira/browse/ARTEMIS-2909" target="_blank">ARTEMIS-2909</a>
the &quot;rate&quot; metric was removed from the management API for queues. In short,
the <code>org.apache.activemq.artemis.core.server.Queue#getRate</code> method is for
slow-consumer detection and is designed for <em>internal</em> use only.</p>
<p>Furthermore, it&apos;s too opaque to be trusted by a remote user as it only
returns the number of message added to the queue since <em>the last time
it was called</em>. The problem here is that the user calling it doesn&apos;t
know when it was invoked last. Therefore, they could be getting the
rate of messages added for the last 5 minutes or the last 5
milliseconds. This can lead to inconsistent and misleading results.</p>
<p>There are three main ways for users to track rates of message
production and consumption (in recommended order):</p>
<ol>
<li><p>Use a <a href="metrics.html">metrics</a> plugin. This is the most feature-rich and
flexible way to track broker metrics, although it requires tools (e.g.
Prometheus) to store the metrics and display them (e.g. Grafana).</p>
</li>
<li><p>Invoke the <code>getMessageCount()</code> and <code>getMessagesAdded()</code> management
methods and store the returned values along with the time they were
retrieved. A time-series database is a great tool for this job. This is
exactly what tools like Prometheus do. That data can then be used to
create informative graphs, etc. using tools like Grafana. Of course, one
can skip all the tools and just do some simple math to calculate rates
based on the last time the counts were retrieved.</p>
</li>
<li><p>Use the broker&apos;s <a href="management.html#message-counters">message counters</a>.
Message counters are the broker&apos;s simple way of providing historical
information about the queue. They provide similar results to the previous
solutions, but with less flexibility since they only track data while the
broker is up and there&apos;s not really any good options for graphing.</p>
</li>
</ol>
</li>
</ol>
<h2 id="2150">2.15.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12348568" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Ability to use FQQN syntax for both <code>security-settings</code> and JNDI lookup</li>
<li>Support pausing dispatch during group rebalance (to avoid potential out-of-order consumption)</li>
<li>Socks5h support</li>
</ul>
<h2 id="2140">2.14.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12348290" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Management methods to update diverts</li>
<li>Ability to &quot;disable&quot; a queue so that messages are not routed to it</li>
<li>Support JVM GC &amp; thread metrics</li>
<li>Support for resetting queue properties by unsetting them in <code>broker.xml</code></li>
<li>Undeploy diverts by removing them from <code>broker.xml</code></li>
<li>Add <code>addressMemoryUsagePercentage</code> and <code>addressSize</code> as metrics</li>
</ul>
<h4 id="upgrading-from-older-versions">Upgrading from older versions</h4>
<p>This is likely a rare situation, but it&apos;s worth mentioning here anyway. Prior
to 2.14.0 if you configured a parameter on a <code>queue</code> in <code>broker.xml</code> (e.g.
<code>max-consumers</code>) and then later <em>removed</em> that setting the configured value you
set would remain. This has changed in 2.14.0 via ARTEMIS-2797. Any value that
is not explicitly set in <code>broker.xml</code> will be set back to either the static
default or the dynamic default configured in the address-settings (e.g. via
<code>default-max-consumers</code> in this example). Therefore, ensure any existing queues
have all the needed parameters set in <code>broker.xml</code> values before upgrading.</p>
<h2 id="2130">2.13.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12348088" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Management methods for an address&apos; duplicate ID cache to check the cache&apos;s size and clear it</li>
<li>Support for <a href="message-expiry.html#configuring-expiry-delay">min/max expiry-delay</a></li>
<li><a href="security.html#per-acceptor-security-domains">Per-acceptor security domains</a></li>
<li>Command-line <code>check</code> tool for checking the health of a broker</li>
<li>Support disabling metrics per address via the <a href="address-settings.html"><code>enable-metrics</code> address setting</a></li>
<li>Improvements to the <a href="logging.html#configuring-audit-logging">audit logging</a></li>
<li>Speed optimizations for the <code>HierarchicalObjectRepository</code>, an internal object used to store address and security settings</li>
</ul>
<h4 id="upgrading-from-older-versions">Upgrading from older versions</h4>
<p>Version 2.13.0 added new <a href="logging.html#configuring-audit-logging">audit logging</a>
which is logged at <code>INFO</code> level and can be very verbose. The
<code>logging.properties</code> shipped with this new version is set up to filter this out
by default. If your <code>logging.properties</code> isn&apos;t updated appropriately this audit
logging will likely appear in your console and <code>artemis.log</code> file assuming
you&apos;re using a logging configuration close to the default. Add this to your
<code>logging.properties</code>:</p>
<pre><code># to enable audit change the level to INFO
logger.org.apache.activemq.audit.base.level=ERROR
logger.org.apache.activemq.audit.base.handlers=AUDIT_FILE
logger.org.apache.activemq.audit.base.useParentHandlers=false
logger.org.apache.activemq.audit.resource.level=ERROR
logger.org.apache.activemq.audit.resource.handlers=AUDIT_FILE
logger.org.apache.activemq.audit.resource.useParentHandlers=false
logger.org.apache.activemq.audit.message.level=ERROR
logger.org.apache.activemq.audit.message.handlers=AUDIT_FILE
logger.org.apache.activemq.audit.message.useParentHandlers=false
...
#Audit logger
handler.AUDIT_FILE=org.jboss.logmanager.handlers.PeriodicRotatingFileHandler
handler.AUDIT_FILE.level=INFO
handler.AUDIT_FILE.properties=suffix,append,autoFlush,fileName
handler.AUDIT_FILE.suffix=.yyyy-MM-dd
handler.AUDIT_FILE.append=true
handler.AUDIT_FILE.autoFlush=true
handler.AUDIT_FILE.fileName=${artemis.instance}/log/audit.log
handler.AUDIT_FILE.formatter=AUDIT_PATTERN
formatter.AUDIT_PATTERN=org.jboss.logmanager.formatters.PatternFormatter
formatter.AUDIT_PATTERN.properties=pattern
formatter.AUDIT_PATTERN.pattern=%d [AUDIT](%t) %s%E%n
</code></pre><h2 id="2120">2.12.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12346675" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Support for <a href="configuring-transports.html#configuring-netty-socks-proxy">SOCKS proxy</a></li>
<li>Real <a href="large-messages.html">large message</a> support for AMQP</li>
<li><a href="undelivered-messages.html#automatically-creating-dead-letter-resources">Automatic creation of dead-letter resources</a> akin to ActiveMQ 5&apos;s individual dead-letter strategy</li>
<li><a href="message-expiry.html#configuring-automatic-creation-of-expiry-resources">Automatic creation of expiry resources</a></li>
<li>Improved API for queue creation</li>
<li>Allow users to override JAVA_ARGS via environment variable</li>
<li>Reduce heap usage during journal loading during broker start-up</li>
<li>Allow <code>server</code> header in STOMP <code>CONNECTED</code> frame to be disabled</li>
<li>Support disk store used percentage as an exportable metric (e.g. to be monitored by tools like Prometheus, etc.)</li>
<li>Ability to configure a &quot;<a href="https://www.eclipse.org/jetty/javadoc/9.4.26.v20200117/org/eclipse/jetty/server/HttpConfiguration.Customizer.html" target="_blank">customizer</a>&quot; for the embedded web server</li>
<li>Improved logging for errors when starting an <code>acceptor</code> to more easily identify the <code>acceptor</code> which has the problem.</li>
<li>The CLI will now read the <code>broker.xml</code> to find the default <code>connector</code> URL for commands which require it (e.g. <code>consumer</code>, <code>producer</code>, etc.)</li>
</ul>
<h2 id="2110">2.11.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12346258" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Support <a href="retroactive-addresses.html">retroactive addresses</a>.</li>
<li>Support downstream federated <a href="federation-queue.html#configuring-downstream-federation">queues</a> and <a href="federation-address.html#configuring-downstream-federation">addresses</a>.</li>
<li>Make security manager <a href="security.html#custom-security-manager">configurable via XML</a>.</li>
<li>Support pluggable SSL <a href="configuring-transports.html#configuring-netty-ssl">TrustManagerFactory</a>.</li>
<li>Add plugin support for federated queues/addresses.</li>
<li>Support <code>com.sun.jndi.ldap.read.timeout</code> in <a href="security.html#ldaploginmodule">LDAPLoginModule</a>.</li>
</ul>
<h2 id="2100">2.10.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12345602" target="_blank">Full release notes</a>.</p>
<p>This was mainly a bug-fix release with a notable dependency change impacting version upgrade.</p>
<h4 id="upgrading-from-290">Upgrading from 2.9.0</h4>
<p>Due to the WildFly dependency upgrade the broker start scripts/configuration need to be adjusted after upgrading.</p>
<h5 id="on-nix">On *nix</h5>
<p>Locate this statement in <code>bin/artemis</code>:</p>
<pre><code>WILDFLY_COMMON=&quot;$ARTEMIS_HOME/lib/wildfly-common-1.5.1.Final.jar&quot;
</code></pre><p>This needs to be replaced with this:</p>
<pre><code>WILDFLY_COMMON=&quot;$ARTEMIS_HOME/lib/wildfly-common-1.5.2.Final.jar&quot;
</code></pre><h5 id="on-windows">On Windows</h5>
<p>Locate this part of <code>JAVA_ARGS</code> in <code>etc/artemis.profile.cmd</code> respectively <code>bin/artemis-service.xml</code>:</p>
<pre><code>%ARTEMIS_HOME%\lib\wildfly-common-1.5.1.Final.jar
</code></pre><p>This needs to be replaced with this:</p>
<pre><code>%ARTEMIS_HOME%\lib\wildfly-common-1.5.2.Final.jar
</code></pre><h2 id="290">2.9.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12345527" target="_blank">Full release notes</a>.</p>
<p>This was a light release. It included a handful of bug fixes, a few improvements, and one major new feature.</p>
<p>Highlights:</p>
<ul>
<li>Support <a href="metrics.html">exporting metrics</a>.</li>
</ul>
<h2 id="281">2.8.1</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12345432" target="_blank">Full release notes</a>.</p>
<p>This was mainly a bug-fix release with a notable dependency change impacting version upgrade.</p>
<h4 id="upgrading-from-280">Upgrading from 2.8.0</h4>
<p>Due to the dependency upgrade made on <a href="https://issues.apache.org/jira/browse/ARTEMIS-2319" target="_blank">ARTEMIS-2319</a> the
broker start scripts need to be adjusted after upgrading.</p>
<h5 id="on-nix">On *nix</h5>
<p>Locate this <code>if</code> statement in <code>bin/artemis</code>:</p>
<pre><code>if [ -z &quot;$LOG_MANAGER&quot; ] ; then
# this is the one found when the server was created
LOG_MANAGER=&quot;$ARTEMIS_HOME/lib/jboss-logmanager-2.0.3.Final.jar&quot;
fi
</code></pre><p>This needs to be replaced with this block:</p>
<pre><code>if [ -z &quot;$LOG_MANAGER&quot; ] ; then
# this is the one found when the server was created
LOG_MANAGER=&quot;$ARTEMIS_HOME/lib/jboss-logmanager-2.1.10.Final.jar&quot;
fi
WILDFLY_COMMON=`ls $ARTEMIS_HOME/lib/wildfly-common*jar 2&gt;/dev/null`
if [ -z &quot;$WILDFLY_COMMON&quot; ] ; then
# this is the one found when the server was created
WILDFLY_COMMON=&quot;$ARTEMIS_HOME/lib/wildfly-common-1.5.1.Final.jar&quot;
fi
</code></pre><p>Notice that the <code>jboss-logmanager</code> version has changed and there is also a new <code>wildfly-common</code> library.</p>
<p>Not much further down there is this line:</p>
<pre><code>-Xbootclasspath/a:&quot;$LOG_MANAGER&quot; \
</code></pre><p>This line should be changed to be:</p>
<pre><code>-Xbootclasspath/a:&quot;$LOG_MANAGER:$WILDFLY_COMMON&quot; \
</code></pre><h5 id="on-windows">On Windows</h5>
<p>Locate this part of <code>JAVA_ARGS</code> in <code>etc/artemis.profile.cmd</code> respectively <code>bin/artemis-service.xml</code>:</p>
<pre><code>-Xbootclasspath/a:%ARTEMIS_HOME%\lib\jboss-logmanager-2.1.10.Final.jar
</code></pre><p>This needs to be replaced with this:</p>
<pre><code>-Xbootclasspath/a:%ARTEMIS_HOME%\lib\jboss-logmanager-2.1.10.Final.jar;%ARTEMIS_HOME%\lib\wildfly-common-1.5.1.Final.jar
</code></pre><h2 id="280">2.8.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12345169" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Support ActiveMQ5 feature <a href="message-grouping.html#notifying-consumer-of-group-ownership-change">JMSXGroupFirstForConsumer</a>.</li>
<li>Clarify handshake timeout error with remote address.</li>
<li>Support <a href="duplicate-detection.html">duplicate detection</a> for AMQP messages the same as core.</li>
</ul>
<h2 id="270">2.7.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12342977" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Support advanced destination options like <code>consumersBeforeDispatchStarts</code> and <code>timeBeforeDispatchStarts</code> from 5.x.</li>
<li>Add support for delays before deleting addresses and queues via <a href="address-settings.html"><code>auto-delete-queues-delay</code> and <code>auto-delete-addresses-delay</code>
Address Settings</a>.</li>
<li>Support <a href="web-server.html">logging HTTP access</a>.</li>
<li>Add a CLI command to purge a queue.</li>
<li>Support user and role manipulation for PropertiesLoginModule via management interfaces.</li>
<li><a href="https://github.com/apache/activemq-artemis/tree/master/artemis-docker" target="_blank">Docker images</a>.</li>
<li><a href="logging.html#configuring-audit-log">Audit logging</a>.</li>
<li>Implementing <a href="consumer-priority">consumer priority</a>.</li>
<li>Support <a href="address-model.html#specifying-a-fully-qualified-queue-name">FQQN</a> for producers.</li>
<li>Track routed and unrouted messages sent to an address.</li>
<li>Support <a href="security.html#ldaploginmodule">connection pooling in LDAPLoginModule</a>.</li>
<li>Support configuring a default consumer window size via <a href="address-settings.html"><code>default-consumer-window-size</code> Address Setting</a>.</li>
<li>Support <a href="masking-passwords.html">masking</a> <code>key-store-password</code> and <code>trust-store-password</code> in management.xml.</li>
<li>Support <a href="message-grouping.html#closing-a-message-group"><code>JMSXGroupSeq</code> -1 to close/reset message groups</a> from 5.x.</li>
<li>Allow configuration of <a href="management.html#configuring-remote-jmx-access">RMI registry port</a>.</li>
<li>Support routing-type configuration on <a href="core-bridges.html#configuring-bridges">core bridge</a>.</li>
<li>Move artemis-native as its own project, as <a href="https://github.com/apache/activemq-artemis-native" target="_blank">activemq-artemis-native</a>.</li>
<li>Support <a href="federation.html">federated queues and addresses</a>.</li>
</ul>
<h2 id="264">2.6.4</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12344010" target="_blank">Full release notes</a>.</p>
<p>This was mainly a bug-fix release with a few improvements a couple notable new features:</p>
<p>Highlights:</p>
<ul>
<li>Added the ability to set the text message content on the <code>producer</code> CLI command.</li>
<li>Support reload logging configuration at runtime.</li>
</ul>
<h2 id="263">2.6.3</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12343472" target="_blank">Full release notes</a>.</p>
<p>This was mainly a bug-fix release with a few improvements but no substantial new features.</p>
<h2 id="262">2.6.2</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12343404" target="_blank">Full release notes</a>.</p>
<p>This was a bug-fix release with no substantial new features or improvements.</p>
<h2 id="261">2.6.1</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12343356" target="_blank">Full release notes</a>.</p>
<p>This was a bug-fix release with no substantial new features or improvements.</p>
<h2 id="260">2.6.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12342903" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Support <a href="security.html#certificateloginmodule">regular expressions for matching client certificates</a>.</li>
<li>Support <code>SASL_EXTERNAL</code> for AMQP clients.</li>
<li>New examples showing <a href="examples.html#openwire">virtual topic mapping</a> and <a href="examples.html#exclusive-queue">exclusive queue</a> features.</li>
</ul>
<h2 id="250">2.5.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12342127" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li><a href="exclusive-queues.html">Exclusive consumers</a>.</li>
<li>Equivalent ActiveMQ 5.x Virtual Topic naming abilities.</li>
<li>SSL Certificate revocation list.</li>
<li><a href="last-value-queues.html">Last-value queue</a> support for OpenWire.</li>
<li>Support <a href="masking-passwords.html">masked passwords</a> in bootstrap.xm and login.config</li>
<li>Configurable <a href="broker-plugins.html#using-the-loggingactivemqserverplugin">broker plugin</a> implementation for logging various broker events (i.e. <code>LoggingActiveMQServerPlugin</code>).</li>
<li>Option to use OpenSSL provider for Netty via the <a href="configuring-transports.html#configuring-netty-ssl"><code>sslProvider</code></a> URL parameter.</li>
<li>Enable <a href="configuration-index.html">splitting of broker.xml into multiple files</a>.</li>
<li>Enhanced message count and size metrics for queues.</li>
</ul>
<h4 id="upgrading-from-240">Upgrading from 2.4.0</h4>
<ol>
<li>Due to changes from <a href="https://issues.apache.org/jira/browse/ARTEMIS-1644" target="_blank">ARTEMIS-1644</a> any <code>acceptor</code> that needs to be
compatible with HornetQ and/or Artemis 1.x clients needs to have <code>anycastPrefix=jms.queue.;multicastPrefix=jms.topic.</code>
in the <code>acceptor</code> url. This prefix used to be configured automatically behind the scenes when the broker detected
these old types of clients, but that broke certain use-cases with no possible work-around. See
<a href="https://issues.apache.org/jira/browse/ARTEMIS-1644" target="_blank">ARTEMIS-1644</a> for more details.</li>
</ol>
<h2 id="240">2.4.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12341540" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li><a href="management.html#role-based-authorisation-for-jmx">JMX configuration via XML</a> rather than having to use system properties via command line or start script.</li>
<li>Configuration of <a href="protocols-interoperability.html#stomp-over-web-sockets">max frame payload length for STOMP web-socket</a>.</li>
<li>Ability to configure HA using JDBC persistence.</li>
<li>Implement <a href="management.html">role-based access control for management objects</a>.</li>
</ul>
<h4 id="upgrading-from-230">Upgrading from 2.3.0</h4>
<ol>
<li>Create <code>&lt;ARTEMIS_INSTANCE&gt;/etc/management.xml</code>. At the very least, the file must contain this:<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">management-context</span> <span class="hljs-attr">xmlns</span>=<span class="hljs-string">&quot;http://activemq.apache.org/schema&quot;</span>/&gt;</span>
</code></pre>
This configures role based authorisation for JMX. Read more in the <a href="management.html">Management</a> documentation.</li>
<li><p>If configured, remove the Jolokia war file from the <code>web</code> element in <code>&lt;ARTEMIS_INSTANCE&gt;/etc/bootstrap.xml</code>:</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">app</span> <span class="hljs-attr">url</span>=<span class="hljs-string">&quot;jolokia&quot;</span> <span class="hljs-attr">war</span>=<span class="hljs-string">&quot;jolokia.war&quot;</span>/&gt;</span>
</code></pre>
<p>This is no longer required as the Jolokia REST interface is now integrated into the console web application.</p>
<p>If the following is absent and you desire to deploy the web console then add:</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">app</span> <span class="hljs-attr">url</span>=<span class="hljs-string">&quot;console&quot;</span> <span class="hljs-attr">war</span>=<span class="hljs-string">&quot;console.war&quot;</span>/&gt;</span>
</code></pre>
<p><strong>Note:</strong> the Jolokia REST interface URL will now be at <code>http://&lt;host&gt;:&lt;port&gt;/console/jolokia</code></p>
</li>
</ol>
<h2 id="230">2.3.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12341247" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li><a href="management-console.html">Web admin console</a>!</li>
<li><a href="critical-analysis.html">Critical Analysis</a> and deadlock detection on broker</li>
<li>Support <a href="configuring-transports.html#macos-native-transport">Netty native kqueue</a> on Mac.</li>
<li><a href="last-value-queues.html">Last-value queue</a> for AMQP</li>
</ul>
<h4 id="upgrading-from-220">Upgrading from 2.2.0</h4>
<ol>
<li>If you desire to deploy the web console then add the following to the <code>web</code> element in <code>&lt;ARTEMIS_INSTANCE&gt;/etc/bootstrap.xml</code>:<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">app</span> <span class="hljs-attr">url</span>=<span class="hljs-string">&quot;console&quot;</span> <span class="hljs-attr">war</span>=<span class="hljs-string">&quot;console.war&quot;</span>/&gt;</span>
</code></pre>
</li>
</ol>
<h2 id="220">2.2.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12340541" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Scheduled messages with the STOMP protocol.</li>
<li>Support for JNDIReferenceFactory and JNDIStorable.</li>
<li>Ability to delete queues and addresses when <a href="config-reload.html">broker.xml changes</a>.</li>
<li><a href="security.html#kerberos-authentication">Client authentication via Kerberos TLS Cipher Suites (RFC 2712)</a>.</li>
</ul>
<h2 id="210">2.1.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12339963" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li><a href="broker-plugins.html">Broker plugin support</a>.</li>
<li>Support <a href="configuring-transports.html#linux-native-transport">Netty native epoll</a> on Linux.</li>
<li>Ability to configure arbitrary security role mappings.</li>
<li>AMQP performance improvements.</li>
</ul>
<h2 id="200">2.0.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12338813" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Huge update involving a significant refactoring of the <a href="address-model.html">addressing model</a> yielding the following benefits:<ul>
<li>Simpler and more flexible XML configuration.</li>
<li>Support for additional messaging use-cases.</li>
<li>Eliminates confusing JMS-specific queue naming conventions (i.e. &quot;jms.queue.&quot; &amp; &quot;jms.topic.&quot; prefixes).</li>
</ul>
</li>
<li>Pure encoding of messages so protocols like AMQP don&apos;t need to convert messages to &quot;core&quot; format unless absolutely necessary.</li>
<li><a href="persistence.html#memory-mapped">&quot;MAPPED&quot; journal type</a> for increased performance in certain use-cases.</li>
</ul>
<h2 id="156">1.5.6</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12340547" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Bug fixes.</li>
</ul>
<h2 id="155">1.5.5</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12339947" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Bug fixes.</li>
</ul>
<h2 id="154">1.5.4</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12339158" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Support Oracle12C for JDBC persistence.</li>
<li>Bug fixes.</li>
</ul>
<h2 id="153">1.5.3</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12339575" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Support &quot;byte notation&quot; (e.g. &quot;K&quot;, &quot;KB&quot;, &quot;Gb&quot;, etc.) in broker XML configuration.</li>
<li>CLI command to recalculate disk sync times.</li>
<li>Bug fixes.</li>
</ul>
<h2 id="152">1.5.2</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12338833" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Support for paging using JDBC.</li>
<li>Bug fixes.</li>
</ul>
<h2 id="151">1.5.1</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12338661" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Support outgoing connections for AMQP.</li>
<li>Bug fixes.</li>
</ul>
<h2 id="150">1.5.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12338118" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>AMQP performance improvements.</li>
<li>JUnit rule implementation so messaging resources like brokers can be easily configured in tests.</li>
<li>Basic CDI integration.</li>
<li>Store user&apos;s password in hash form by default.</li>
</ul>
<h2 id="140">1.4.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12336052" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>&quot;Global&quot; limit for disk usage.</li>
<li>Detect and reload certain XML configuration changes at runtime.</li>
<li>MQTT interceptors.</li>
<li>Support adding/deleting queues via CLI.</li>
<li>New &quot;browse&quot; security permission for clients who only wish to look at messages.</li>
<li>Option to populate JMSXUserID.</li>
<li>&quot;Dual authentication&quot; support to authenticate SSL-based and non-SSL-based clients differently.</li>
</ul>
<h2 id="130">1.3.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12328978" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Better support of OpenWire features (e.g. reconnect, producer flow-control, optimized acknowledgements)</li>
<li>SSL keystore reload at runtime.</li>
<li>Initial support for JDBC persistence.</li>
<li>Support scheduled messages on last-value queue.</li>
</ul>
<h2 id="120">1.2.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12333274" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>Improvements around performance</li>
<li>OSGi support.</li>
<li>Support functionality equivalent to all 5.x JAAS login modules including:<ul>
<li>Properties file</li>
<li>LDAP</li>
<li>SSL certificate</li>
<li>&quot;Guest&quot;</li>
</ul>
</li>
</ul>
<h2 id="110">1.1.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12332642&amp;projectId=12315920" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>MQTT support.</li>
<li>The examples now use the CLI programmatically to create, start, stop, etc. servers reflecting real cases used in
production.</li>
<li>CLI improvements. There are new tools to compact the journal and additional improvements to the user experience.</li>
<li>Configurable resource limits.</li>
<li>Ability to disable server-side message load-balancing.</li>
</ul>
<h2 id="100">1.0.0</h2>
<p><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315920&amp;version=12328953" target="_blank">Full release notes</a>.</p>
<p>Highlights:</p>
<ul>
<li>First release of the <a href="http://mail-archives.apache.org/mod_mbox/activemq-dev/201407.mbox/%3cCAKF+bsovr7Hvn-rMYkb3pF6hoGjx7nuJWzT_Nh8MyC4usRBX9A@mail.gmail.com%3e" target="_blank">donated code-base</a> as ActiveMQ Artemis!</li>
<li>Lots of features for parity with ActiveMQ 5.x including:<ul>
<li>OpenWire support</li>
<li>AMQP 1.0 support</li>
<li>URL based connections</li>
<li>Auto-create addresses/queues</li>
<li>Jolokia integration</li>
</ul>
</li>
</ul>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="project-info.html" class="navigation navigation-prev " aria-label="Previous page: Project Info">
<i class="fa fa-angle-left"></i>
</a>
<a href="messaging-concepts.html" class="navigation navigation-next " aria-label="Next page: Messaging Concepts">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"Versions","level":"1.5","depth":1,"next":{"title":"Messaging Concepts","level":"1.6","depth":1,"path":"messaging-concepts.md","ref":"messaging-concepts.md","articles":[]},"previous":{"title":"Project Info","level":"1.4","depth":1,"path":"project-info.md","ref":"project-info.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"github":"apache/activemq-artemis","theme":"default","githubHost":"https://github.com/","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"version":"2.24.0","title":"ActiveMQ Artemis Documentation","links":{"home":"http://activemq.apache.org/artemis","issues":"https://issues.apache.org/jira/browse/ARTEMIS","contribute":"http://activemq.apache.org/contributing.html"},"gitbook":"3.x.x","description":"ActiveMQ Artemis User Guide and Reference Documentation"},"file":{"path":"versions.md","mtime":"2022-08-08T16:17:30.772Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2022-08-08T16:18:17.607Z"},"basePath":".","book":{"language":""}});
});
</script>
</div>
<script src="gitbook/gitbook.js"></script>
<script src="gitbook/theme.js"></script>
<script src="gitbook/gitbook-plugin-search/search-engine.js"></script>
<script src="gitbook/gitbook-plugin-search/search.js"></script>
<script src="gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
<script src="gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
<script src="gitbook/gitbook-plugin-sharing/buttons.js"></script>
<script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>