- 1. 2.35.0
- 2. 2.34.0
- 3. 2.33.0
- 4. 2.32.0
- 5. 2.31.2
- 6. 2.31.1
- 7. 2.31.0
- 8. 2.30.0
- 9. 2.29.0
- 10. 2.28.0
- 11. 2.27.1
- 12. 2.27.0
- 13. 2.26.0
- 14. 2.25.0
- 15. 2.24.0
- 16. 2.23.1
- 17. 2.23.0
- 18. 2.22.0
- 19. 2.21.0
- 20. 2.20.0
- 21. 2.19.0
- 22. 2.18.0
- 23. 2.17.0
- 24. 2.16.0
- 25. 2.15.0
- 26. 2.14.0
- 27. 2.13.0
- 28. 2.12.0
- 29. 2.11.0
- 30. 2.10.0
- 31. 2.9.0
- 32. 2.8.1
- 33. 2.8.0
- 34. 2.7.0
- 35. 2.6.4
- 36. 2.6.3
- 37. 2.6.2
- 38. 2.6.1
- 39. 2.6.0
- 40. 2.5.0
- 41. 2.4.0
- 42. 2.3.0
- 43. 2.2.0
- 2.1.0
- 44. 2.0.0
- 45. 1.5.6
- 46. 1.5.5
- 47. 1.5.4
- 48. 1.5.3
- 49. 1.5.2
- 50. 1.5.1
- 51. 1.5.0
- 52. 1.4.0
- 53. 1.3.0
- 54. 1.2.0
- 55. 1.1.0
- 56. 1.0.0
This chapter provides the following information for each release:
A link to the full release notes which includes all issues resolved in the release.
A brief list of “highlights” when applicable.
If necessary, specific steps required when upgrading from the previous version.
If the upgrade spans multiple versions then the steps from each version need to be followed in order. |
Follow the general upgrade procedure outlined in the Upgrading the Broker chapter in addition to any version-specific upgrade instructions outlined here. |
1. 2.35.0
1.1. Highlights
2. 2.34.0
2.1. Highlights
2.2. Upgrading from 2.33.0
Due to ARTEMIS-4712 the connection pooling functionality configured via the
connectionPool
property inlogin.config
is no longer supported in theLDAPLoginModule
. Thelogin.config
may still use theconnectionPool
property. No error will be thrown. However, connections will no longer be pooled regardless of the configuration.Due to ARTEMIS-4498 the web console will now report all internal objects.
This was done in an attempt to allow administrators to act when things are not working as expected, to get metrics on these objects and allow more transparency for the broker.
this includes all Openwire Advisor queues and addresses, MQTT internal objects, Cluster Store and Forward (SNF) Queues, Mirror SNF.
You may want to revisit authorizations if you mean to control access to certain users on the web console.
The CLI operation
./artemis queue stat
has its output improved and updated. If you parsed the previous output in scripts you will see differences in the output.- It is not recommended to parse the output of a CLI Operation. You may use jolokia calls over management instead with proper JSON output.
3. 2.33.0
3.1. Highlights
Support for JSON formatted typed properties on CLI
producer
commandNew CLI command
pwd
for showing directories related to the current instanceMaven Bill of Materials (BOM)
artemis-bom
to simplify integration“FirstMessage” API for scheduled messages
New “view” and “edit” permissions for management operations configurable via
security-settings
inbroker.xml
New
sslAutoReload
parameter for the embedded web server configured inbootstrap.xml
to detect and automatically reload whe SSL stores change on diskPerformance improvements on mirroring and paging
Logging metrics to mitigate the risk of missing
WARN
orERROR
messages in the log.Much improved documentation on network isolation (aka split brain)
Pluggable lock manager (aka pluggable quorum voting) out of “experimental” status and ready for general use
3.2. Upgrading from 2.32.0
Due to ARTEMIS-4532 the names of addresses and queues related to MQTT topics and subscriptions respectively may change. This will impact MQTT use-cases if both of the following are true:
The broker is configured to use a wildcard syntax which doesn’t match the MQTT wildcard syntax (e.g. the default wildcard syntax).
You are using characters from the broker’s wildcard syntax in your MQTT topic name or filter. For example, if you were using the default wildcard syntax and an MQTT topic named
1.0/group/device
. The dot (.
) character here is part of the broker’s wildcard syntax, and it is being used in the name of an MQTT topic.In this case the characters from the broker’s wildcard syntax that do not match the characters in the MQTT wildcard syntax will be escaped with a backslash (i.e.
\
). To avoid this conversion you can configure the broker to use the MQTT wildcard syntax or change the name of the MQTT topic name or filter.
This change will also impact OpenWire JMS consumers which are using
#
instead of<
for wildcard purposes. In previous versions the#
character was just passed through when converting from the OpenWire wildcard format to the Core wildcard format. However, now the#
character is escaped during conversion. It is a bug for an application to use to use#
as a wildcard with the OpenWire JMS client;>
is the proper character to use as specified in the ActiveMQ Classic documentation on wildcards.Due to ARTEMIS-4559 folks embedding the broker and also depending on the
artemis-quorum-ri
and/orartemis-quorum-api
modules and/or usingorg.apache.activemq.artemis.core.config.ha.DistributedPrimitiveManagerConfiguration
will need to useartemis-lockmanager-ri
,artemis-lockmanager-api
, andorg.apache.activemq.artemis.core.config.ha.DistributedLockManagerConfiguration
respectively. Previously these were marked as “experimental” in the documentation and were changed strictly in name to clarify their use conceptually. Furthermore, the documentation around high availability and network isolation (i.e. split brain) was refactored significantly to be more clear and comprehensive.
4. 2.32.0
4.1. Highlights
Mirrored Core Messages can now be sent on their native format without conversions
Mirror bug fixes and improvements
ActiveMQ Artemis has now adopted more inclusive language definitions.
The examples are now part of its own repository: https://github.com/apache/activemq-artemis-examples/
4.2. Upgrading from 2.31.x
Due to ARTEMIS-4501 MQTT subscription queues will be automatically removed when the corresponding session expires, either based on the session expiry interval passed by an MQTT 5 client or based on the configured
defaultMqttSessionExpiryInterval
for MQTT 3.x clients or MQTT 5 clients which don’t explicitly pass a session expiry interval.Prior to this change removing subscription queues relied on the generic
auto-delete-*
address-settings
.These settings are now no longer required.
Configure
defaultMqttSessionExpiryInterval
instead.Due to ARTEMIS-3474 the following configuration elements have changed wherever they occur (e.g.
broker.xml
,bootstrap.xml
, etc.), although all the previous configurations will still be supported for the time being:master
→primary
slave
→backup
check-for-live-server
→check-for-active-server
whitelist
→allowlist
blacklist
→denylist
Additionally, references to these elements have also changed in the documentation and in management interfaces. Cluster topology information (e.g. returned from the
listNetworkTopology
) will contain bothprimary
andlive
entries for nodes functioning as primary servers.
5. 2.31.2
5.1. Highlights
- Bug Fix
6. 2.31.1
6.1. Highlights
- Bug Fixes and component upgrades
7. 2.31.0
7.1. Highlights
Introduced an interactive shell for running CLI command as well as Bash & ZSH auto-complete support.
Added a CLI cluster verification tool to help monitor broker topologies. Use via the
check cluster
command.The
queue stat
command is now able to to verify the message counts on the entire cluster topology when clustering is in use.Added AMQP Federation support to broker connections.
Significantly improved the Paging JDBC Persistence.
Converted much of the documentation from MarkDown to AsciiDoc. See ARTEMIS-4383 for more details.
Many other bug fixes and improvements.
7.2. Upgrading from 2.30.0
- Due to ARTEMIS-4372 and the introduction of the new Artemis shell feature when you invoke
./artemis
it will now start the new shell to navigate through the CLI commands rather than just spitting out thehelp
text.
8. 2.30.0
8.1. Highlights
- This is mainly a bug-fix release with a few small improvements and a handful of dependency upgrades. See the release notes for all the details.
9. 2.29.0
9.1. Highlights
- This version underwent extensive testing and fixes regarding Large Messages, with a few JIRAs dedicated to this topic. Look on the release notes for more information.
9.2. Upgrading from 2.28.0
Due to ARTEMIS-4151 the default access for MBeans not defined in the
role-access
orallowlist
ofmanagement.xml
is now read only. This is a precautionary measure to ensure no unanticipated MBean deployed with the broker poses a risk. However, this will also impact JVM-specific and platform MBeans as well (e.g. which allow manual garbage collection, “flight recording,” etc.). Write access and general operational access to these MBeans will now have to be manually enabled inmanagement.xml
either by changing thedefault-access
(not recommended) or specifically configuring arole-access
for the particular MBean in question.This applies to all MBean access including directly via JMX and via the Jolokia JMX-HTTP bridge. Due to ARTEMIS-4212 the broker will reject address definitions in
broker.xml
which don’t specify a routing type, e.g.:<address name="myAddress"/>
Such configurations will need to be changed to specify a routing-type, e.g.:
<address name="myAddress">
<anycast/>
</address>
Or
<address name="myAddress">
<multicast/>
</address>
If an address without a routing type is configured the broker will throw an exception like this and fail to start:
java.lang.IllegalArgumentException: AMQ229247: Invalid address configuration for 'myAddress'. Address must support multicast and/or anycast.
at org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser.parseAddressConfiguration(FileConfigurationParser.java:1580)
at org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser.parseAddresses(FileConfigurationParser.java:1038)
at org.apache.activemq.artemis.core.deployers.impl.FileConfigurationParser.parseMainConfig(FileConfigurationParser.java:804)
at org.apache.activemq.artemis.core.config.impl.FileConfiguration.parse(FileConfiguration.java:56)
at org.apache.activemq.artemis.core.config.FileDeploymentManager.readConfiguration(FileDeploymentManager.java:81)
at org.apache.activemq.artemis.integration.FileBroker.createComponents(FileBroker.java:120)
at org.apache.activemq.artemis.cli.commands.Run.execute(Run.java:119)
at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:212)
at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:162)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:144)
at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:61)
Due to ARTEMIS-3707 all use of
javax.transaction.TransactionManager
was removed from the JCA Resource Adapter. However, this rendered thetransactionTimeout
activation configuration property useless. Some existing users rely on this behavior so it has been restored and properly deprecated for future removal.
10. 2.28.0
10.1. Highlights
Bug Fixes and improvements as usual
ARTEMIS-4136 Mirror sync replication
- Mirror now has an option to set sync=true. Blocking operations from clients will wait a round trip on the mirror.
ARTEMIS-4065 Paging Counter Journal Records were removed
- We don’t store page counters records on the journal any longer what should simplify operation and improve performance.
10.2. Upgrading from 2.27.0
- Due to ARTEMIS-3871 the naming pattern used for MQTT shared subscription queues has changed. Previously the subscription queue was named according to the subscription name provided in the MQTT
SUBSCRIBE
packet. However, MQTT allows the same name to be used across multiple subscriptions whereas queues in the broker must be named uniquely. Now the subscription queue will be named according to the subscription name and topic name so that all subscription queue names will be unique. Before upgrading please ensure all MQTT shared subscriptions are empty. When the subscribers reconnect they will get a new subscription queue. If they are not empty you can move the messages to the new subscription queue administratively.
11. 2.27.1
11.1. Highlights
Bug Fixes
AMQP Large Message over Bridges were broken
Rollback of massive transactions would take a long time to process
Improvements to auto-create and auto-delete queues.
12. 2.27.0
12.1. Highlights
2.27.0 Introduced a new upgrade tool to help migrating your instance to a newer version.
The client and broker now use SLF4J for their logging API.
The broker distribution now uses Log4J 2 as its logging implementation.
12.2. Upgrading from 2.26.0
Client applications wanting logging will now need to supply an appropriate SLF4J-supporting logging implementation configured appropriately for their needs. See client application logging for more information plus an example around using Log4J 2.
The broker distribution now includes and configures Log4J 2 as its logging implementation, see logging for more details. If upgrading an existing broker instance rather than creating a new instance, some configuration etc updates will be necessary for the brokers existing instance /etc and /bin files.
You can use the new upgrade helper tool from the newly downloaded broker to refresh various configuration files and scripts for an existing broker instance. The broker.xml and data are left in place as-is.
You should back up your existing broker instance before running the command. |
The command can be executed by running ./artemis upgrade <path-to-your-instance>
from the new downloaded broker home.
Most existing customisations to the old configuration files and scripts will be lost in the process of refreshing the files. As such you should compare the old configuration files with the refreshed ones and then port any missing customisations you may have made as necessary. The upgrade command itself will copy the older files it changes to an Similarly, if you had customised the old |
Note also that the configuration-file-refresh-period
setting in broker.xml
no longer covers logging configuration refresh. Log4J 2 has its own configuration reload handling, configured via the monitorInterval
property within the Log4J configuration file itself. The default <instance>/etc/log4j2.properties
file created has a 5 second monitorInterval
value set to align with the prior default broker behaviour.
12.3. Manual update
Alternatively, rather than using the upgrade helper command as outlined above, you can instead perform the update manually, following the general upgrading procedure plus the additional steps below:
The new
<instance>/etc/log4j2.properties
file should be created with Log4J 2 configuration. The file used by the “artemis create” CLI command can be downloaded from: log4j2.propertiesThe old
<instance>/etc/logging.properties
JBoss Logging configuration file should be deleted.Related startup script or profile cleanups are needed: a diff file demonstrating the changes needed since 2.26.0 is available here for *nix or here for Windows.
13. 2.26.0
13.1. Highlights
- Bug fixes and improvements
13.2. Upgrading from 2.25.0
Due to ARTEMIS-4006 the
artemis-jms-client-all
andartemis-jakarta-client-all
clients were removed from thelib/client
directory in the binary distribution. If you use these libraries they can be found at Maven Central (e.g. here). Please refer to the client class path documentation for more information.We removed the REST interface from the code-base and documentation. If you still require the REST interface you can access the latest version which is still viable. You can still follow the steps from the previous documentation to build and deploy the interface. However, you should stop using it as it will not be maintained any more.
Due to ARTEMIS-3980 the web content was removed from the binary distribution. We now redirect web requests with the root target to the administration console. To enable this new redirect behavior on current instances you have to update
bootstrap.xml
. Change:<web path="web">
to:
<web path="web" rootRedirectLocation="console">
If you used to customize the index page or to add custom content in the
web
folder please refer to the web-server documentation for more information on disabling the redirect and enabling the web content.
14. 2.25.0
14.1. Highlights
Improvement on Paging Flow Control
Many other bug fixes and improvements
15. 2.24.0
15.1. Highlights
- Streamlined page caches and files are just read into queues without the need of soft caches.
15.2. Upgrading from 2.23.0
Due to ARTEMIS-3851 the queue created for an MQTT 3.x subscriber using
CleanSession=1
is now non-durable rather than durable. This may impactsecurity-settings
for MQTT clients which previously only hadcreateDurableQueue
for their role. They will now needcreateNonDurableQueue
as well. Again, this only has potential impact for MQTT 3.x clients usingCleanSession=1
.Due to ARTEMIS-3892 the username assigned to queues will be based on the validated user rather than just the username submitted by the client application. This will impact use-cases like the following:
When
login.config
is configured with the GuestLoginModule which causes some users to be assigned a specific username and role during the authentication process.When
login.config
is configured with the CertificateLoginModule which causes users to be assigned a username and role corresponding to the subject DN from their SSL certificate.
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’s username would have been left blank.
16. 2.23.1
16.1. Highlights
- ARTEMIS-3856 - Failed to change channel state to ReadyForWriting : java.util.ConcurrentModificationException
17. 2.23.0
17.1. Highlights
management operations for the embedded web server.
18. 2.22.0
18.1. Highlights
- The default
producer-window-size
oncluster-connection
was changed to 1MB to mitigate potential OutOfMemoryErrors in environments with with high latency networking.
19. 2.21.0
19.1. Highlights
MQTT 5 is now supported.
A new set of performance tools are now available to evaluate throughput and Response Under Load performance of Artemis
Diverts now support multiple addresses
Runtime configuration reloading now supports bridges.
Paging can now be configured by message count.
19.2. Upgrading from 2.20.0
Due to XML schema changes to correct an inaccurate domain name 2 files will need to be updated:
etc/bootstrap.xml
etc/management.xml
In both files change the XML namespace from
activemq.org
toactivemq.apache.org
, e.g. inbootsrap.xml
use:<broker xmlns="http://activemq.apache.org/schema">
And in
management.xml
use:<management-context xmlns="http://activemq.apache.org/schema">
If you’re using JDBC persistence then due to the changes in ARTEMIS-3679 you’ll need to update your database. The column
HOLDER_EXPIRATION_TIME
on theNODE_MANAGER_STORE
changed from aTIMESTAMP
to aBIGINT
(orNUMBER(19)
on Oracle). You will have to stop any broker that is accessing that table and either drop it or execute the properALTER TABLE
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.If you’re using JGroups then due to the changes in ARTEMIS-2413 where JGroups was updated from 3.x to 5.x you will need to update your JGroups configuration. Many of the protocols have changed, and there’s no automated tool to bring legacy configurations up to date so please refer to the JGroups documentation for more details on the new configuration. You can find example configurations in the JGroups repository (e.g.
tcp.xml
andudp.xml
).
20. 2.20.0
20.1. Highlights
- Java 11 is now required.
21. 2.19.0
21.1. Highlights
New ability to replay retained journal records via the management API.
New environment/system property to set the “key” for masked passwords when using the default codec.
Ability to disable message-load-balancing and still allow redistribution via the new
OFF_WITH_REDISTRIBUTION
type.MQTT session state can now be cleaned up automatically to avoid excessive accumulation in situations where client’s don’t clean up their own sessions.
Distribute full Jakarta Messaging 3.0 client in the
lib/client
directory along with a new example of how to use it inexamples/features/standard/queue-jakarta
.
22. 2.18.0
22.1. Highlights
Dual Mirror support improving capabilities on AMQP Mirror for Disaster Recovery
Concurrency configuration for core bridges.
XPath filter expressions (for parity with ActiveMQ “Classic”).
22.2. Upgrading from 2.17.0
Due to ARTEMIS-3367 the default setting for
verifyHost
on core connectors has been changed fromfalse
totrue
. This means that core clients will now expect theCN
or Subject Alternative Name values of the broker’s SSL certificate to match the hostname in the client’s URL.This impacts all core-based clients including core JMS clients and core connections between cluster nodes. Although this is a “breaking” change, not 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:
Update your SSL certificates to use a hostname which matches the hostname in the client’s URL. This is the recommended option with regard to security.
Update any connector using
sslEnabled=true
to also useverifyHost=false
. Using this option means that you won’t get the extra security of hostname verification, but no certificates will need to change. This essentially restores the previous default behavior.
For additional details about please refer to section 3.1 of RFC 2818 “HTTP over TLS”.
Due to ARTEMIS-3117 SSL keystore and truststores are no longer reloaded automatically. Previously an instance of
javax.net.ssl.SSLContext
was created for every 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’t scale well with lots of connections. The behavior was changed so that just onejavax.net.ssl.SSLContext
is created for eachacceptor
. However, one can still reload keystores & truststores from disk without restarting the broker. Simply use thereload
management operation on theacceptor
. This is available via JMX, the web console, Jolokia, etc.Here’s an example
curl
command you can use with Jolokia to invoke theartemis
acceptor’sreload
operation:curl --user admin:admin --header "Content-Type: application/json" --request POST --data '{"type":"exec", "mbean":"org.apache.activemq.artemis:broker=\"0.0.0.0\",component=acceptors,name=\"artemis\"", "operation":"reload"}' http://localhost:8161/console/jolokia/exec
Of course you’ll want to adjust the username & password as well as the broker and acceptor names for your environment.
The “rate” metric for queues was removed from the web console via ARTEMIS-3397. This was a follow-up from ARTEMIS-2909 in 2.16.0 (referenced in the upgrade instructions below). The “rate” metric mistakenly left visible on the web console after it was removed from the management API.
Due to ARTEMIS-3141, ARTEMIS-3128, & ARTEMIS-3175 the data returned for any “list” or “browse” 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
management-message-attribute-size-limit
address-setting controls this behavior. If you wish to restore the previous (and potentially dangerous behavior) then you can specify-1
for this. It is256
by default.
23. 2.17.0
23.1. Highlights
Message-level authorization similar to ActiveMQ “Classic”.
A count of addresses and queues is now available from the management API.
You can now reload the broker’s configuration from disk via the management API rather than waiting for the periodic disk scan to pick it up
Performance improvements on libaio journal.
New command-line option to transfer messages.
Performance improvements for the wildcard address manager.
JDBC datasource property values can now be masked.
Lots of usability improvements to the Hawtio 2 based web console introduced in 2.16.0
New management method to create a core bridge using JSON-based configuration input.
Jakarta Messaging 2.0 & 3.0 artifacts for Jakarta EE 8 & 9 respectively.
24. 2.16.0
24.1. Highlights
Configurable namespace for temporary queues
“Basic” SecurityManager implementation that supports replication
Consumer window size support for individual STOMP clients
Improved JDBC connection management
New web console based on Hawtio 2
Performance optimizations (i.e. caching) for authentication and authorization
Support for admin objects in the JCA resource adapter to facilitate deployment into 3rd-party Java EE application servers
Ability to prevent an acceptor from automatically starting
24.2. Upgrading from 2.15.0
Due to ARTEMIS-2893 the fundamental way user management was implemented had to change to avoid data integrity issues related to concurrent modification. From a user’s perspective two main things changed:
User management is no longer possible using the
artemis user
commands when the broker is offline. Of course users are still free to modify the properties files directly in this situation.The parameters of the
artemis user
commands changed. Instead of using something like this:./artemis user add --user guest --password guest --role admin
Use this instead:
./artemis user add --user-command-user guest --user-command-password guest --role admin
In short, use
user-command-user
in lieu ofuser
anduser-command-password
in lieu ofpassword
. Bothuser
andpassword
parameters now apply to the connection used to send the command to the broker.For additional details see ARTEMIS-2893 and ARTEMIS-3010
Due to ARTEMIS-2909 the “rate” metric was removed from the management API for queues. In short, the
org.apache.activemq.artemis.core.server.Queue#getRate
method is for slow-consumer detection and is designed for internal use only.Furthermore, it’s too opaque to be trusted by a remote user as it only returns the number of message added to the queue since the last time it was called. The problem here is that the user calling it doesn’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.
There are three main ways for users to track rates of message production and consumption (in recommended order):
Use a metrics 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).
Invoke the
getMessageCount()
andgetMessagesAdded()
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.Use the broker’s message counters. Message counters are the broker’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’s not really any good options for graphing.
25. 2.15.0
25.1. Highlights
Ability to use FQQN syntax for both
security-settings
and JNDI lookupSupport pausing dispatch during group rebalance (to avoid potential out-of-order consumption)
Socks5h support
26. 2.14.0
26.1. Highlights
Management methods to update diverts
Ability to “disable” a queue so that messages are not routed to it
Support JVM GC & thread metrics
Support for resetting queue properties by unsetting them in
broker.xml
Undeploy diverts by removing them from
broker.xml
Add
addressMemoryUsagePercentage
andaddressSize
as metrics
26.2. Upgrading from 2.13.0
This is likely a rare situation, but it’s worth mentioning here anyway. Prior to 2.14.0 if you configured a parameter on a queue
in broker.xml
(e.g. max-consumers
) and then later removed 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 broker.xml
will be set back to either the static default or the dynamic default configured in the address-settings (e.g. via default-max-consumers
in this example). Therefore, ensure any existing queues have all the needed parameters set in broker.xml
values before upgrading.
27. 2.13.0
27.1. Highlights
Management methods for an address’ duplicate ID cache to check the cache’s size and clear it
Support for min/max expiry-delay
Command-line
check
tool for checking the health of a brokerSupport disabling metrics per address via the enable-metrics address setting
Improvements to the audit logging
Speed optimizations for the
HierarchicalObjectRepository
, an internal object used to store address and security settings
27.2. Upgrading from 2.12.0
Version 2.13.0 added new audit logging which is logged at INFO
level and can be very verbose. The logging.properties
shipped with this new version is set up to filter this out by default. If your logging.properties
isn’t updated appropriately this audit logging will likely appear in your console and artemis.log
file assuming you’re using a logging configuration close to the default. Add this to your logging.properties
:
# 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
28. 2.12.0
28.1. Highlights
Support for SOCKS proxy
Real large message support for AMQP
Automatic creation of dead-letter resources akin to ActiveMQ 5’s individual dead-letter strategy
Improved API for queue creation
Allow users to override JAVA_ARGS via environment variable
Reduce heap usage during journal loading during broker start-up
Allow
server
header in STOMPCONNECTED
frame to be disabledSupport disk store used percentage as an exportable metric (e.g. to be monitored by tools like Prometheus, etc.)
Ability to configure a “customizer“ for the embedded web server
Improved logging for errors when starting an
acceptor
to more easily identify theacceptor
which has the problem.The CLI will now read the
broker.xml
to find the defaultconnector
URL for commands which require it (e.g.consumer
,producer
, etc.)
29. 2.11.0
29.1. Highlights
Support retroactive addresses.
Make security manager configurable via XML.
Support pluggable SSL TrustManagerFactory.
Add plugin support for federated queues/addresses.
Support
com.sun.jndi.ldap.read.timeout
in LDAPLoginModule.
30. 2.10.0
This was mainly a bug-fix release with a notable dependency change impacting version upgrade.
30.1. Upgrading from 2.9.0
Due to the WildFly dependency upgrade the broker start scripts/configuration need to be adjusted after upgrading.
30.1.1. On *nix
Locate this statement in bin/artemis
:
WILDFLY_COMMON="$ARTEMIS_HOME/lib/wildfly-common-1.5.1.Final.jar"
This needs to be replaced with this:
WILDFLY_COMMON="$ARTEMIS_HOME/lib/wildfly-common-1.5.2.Final.jar"
30.1.2. On Windows
Locate this part of JAVA_ARGS
in etc/artemis.profile.cmd
respectively bin/artemis-service.xml
:
%ARTEMIS_HOME%\lib\wildfly-common-1.5.1.Final.jar
This needs to be replaced with this:
%ARTEMIS_HOME%\lib\wildfly-common-1.5.2.Final.jar
31. 2.9.0
This was a light release. It included a handful of bug fixes, a few improvements, and one major new feature.
31.1. Highlights
- Support exporting metrics.
32. 2.8.1
This was mainly a bug-fix release with a notable dependency change impacting version upgrade.
32.1. Upgrading from 2.8.0
Due to the dependency upgrade made on ARTEMIS-2319 the broker start scripts need to be adjusted after upgrading.
32.1.1. On *nix
Locate this if
statement in bin/artemis
:
if [ -z "$LOG_MANAGER" ] ; then
# this is the one found when the server was created
LOG_MANAGER="$ARTEMIS_HOME/lib/jboss-logmanager-2.0.3.Final.jar"
fi
This needs to be replaced with this block:
if [ -z "$LOG_MANAGER" ] ; then
# this is the one found when the server was created
LOG_MANAGER="$ARTEMIS_HOME/lib/jboss-logmanager-2.1.10.Final.jar"
fi
WILDFLY_COMMON=`ls $ARTEMIS_HOME/lib/wildfly-common*jar 2>/dev/null`
if [ -z "$WILDFLY_COMMON" ] ; then
# this is the one found when the server was created
WILDFLY_COMMON="$ARTEMIS_HOME/lib/wildfly-common-1.5.1.Final.jar"
fi
Notice that the jboss-logmanager
version has changed and there is also a new wildfly-common
library.
Not much further down there is this line:
-Xbootclasspath/a:"$LOG_MANAGER" \
This line should be changed to be:
-Xbootclasspath/a:"$LOG_MANAGER:$WILDFLY_COMMON" \
32.1.2. On Windows
Locate this part of JAVA_ARGS
in etc/artemis.profile.cmd
respectively bin/artemis-service.xml
:
-Xbootclasspath/a:%ARTEMIS_HOME%\lib\jboss-logmanager-2.1.10.Final.jar
This needs to be replaced with this:
-Xbootclasspath/a:%ARTEMIS_HOME%\lib\jboss-logmanager-2.1.10.Final.jar;%ARTEMIS_HOME%\lib\wildfly-common-1.5.1.Final.jar
33. 2.8.0
33.1. Highlights
Support ActiveMQ5 feature JMSXGroupFirstForConsumer.
Clarify handshake timeout error with remote address.
Support duplicate detection for AMQP messages the same as core.
34. 2.7.0
34.1. Highlights
Support advanced destination options like
consumersBeforeDispatchStarts
andtimeBeforeDispatchStarts
from 5.x.Add support for delays before deleting addresses and queues via auto-delete-queues-delay and auto-delete-addresses-delay Address Settings.
Support logging HTTP access.
Add a CLI command to purge a queue.
Support user and role manipulation for PropertiesLoginModule via management interfaces.
Implementing consumer priority.
Support FQQN for producers.
Track routed and unrouted messages sent to an address.
Support configuring a default consumer window size via default-consumer-window-size Address Setting.
Support masking
key-store-password
andtrust-store-password
in management.xml.Support JMSXGroupSeq -1 to close/reset message groups from 5.x.
Allow configuration of RMI registry port.
Support routing-type configuration on core bridge.
Move artemis-native as its own project, as activemq-artemis-native.
Support federated queues and addresses.
35. 2.6.4
This was mainly a bug-fix release with a few improvements a couple notable new features:
35.1. Highlights
Added the ability to set the text message content on the
producer
CLI command.Support reload logging configuration at runtime.
36. 2.6.3
This was mainly a bug-fix release with a few improvements but no substantial new features.
37. 2.6.2
This was a bug-fix release with no substantial new features or improvements.
38. 2.6.1
This was a bug-fix release with no substantial new features or improvements.
39. 2.6.0
39.1. Highlights
Support regular expressions for matching client certificates.
Support
SASL_EXTERNAL
for AMQP clients.New examples showing virtual topic mapping and exclusive queue features.
40. 2.5.0
40.1. Highlights
Equivalent ActiveMQ “Classic” Virtual Topic naming abilities.
SSL Certificate revocation list.
Last-value queue support for OpenWire.
Support masked passwords in bootstrap.xm and login.config
Configurable broker plugin implementation for logging various broker events (i.e.
LoggingActiveMQServerPlugin
).Option to use OpenSSL provider for Netty via the sslProvider URL parameter.
Enhanced message count and size metrics for queues.
40.2. Upgrading from 2.4.0
- Due to changes from ARTEMIS-1644 any
acceptor
that needs to be compatible with HornetQ and/or Artemis 1.x clients needs to haveanycastPrefix=jms.queue.;multicastPrefix=jms.topic.
in theacceptor
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 ARTEMIS-1644 for more details.
41. 2.4.0
41.1. Highlights
JMX configuration via XML rather than having to use system properties via command line or start script.
Configuration of max frame payload length for STOMP web-socket.
Ability to configure HA using JDBC persistence.
41.2. Upgrading from 2.3.0
Create
<ARTEMIS_INSTANCE>/etc/management.xml
. At the very least, the file must contain this:<management-context xmlns="http://activemq.apache.org/schema"/>
This configures role based authorisation for JMX. Read more in the Management documentation.
If configured, remove the Jolokia war file from the
web
element in<ARTEMIS_INSTANCE>/etc/bootstrap.xml
:<app url="jolokia" war="jolokia.war"/>
This is no longer required as the Jolokia REST interface is now integrated into the console web application.
If the following is absent and you desire to deploy the web console then add:
<app url="console" war="console.war"/>
the Jolokia REST interface URL will now be at http://<host>:<port>/console/jolokia
42. 2.3.0
42.1. Highlights
Critical Analysis and deadlock detection on broker
Support Netty native kqueue on Mac.
Last-value queue for AMQP
42.2. Upgrading from 2.2.0
If you desire to deploy the web console then add the following to the
web
element in<ARTEMIS_INSTANCE>/etc/bootstrap.xml
:<app url="console" war="console.war"/>
43. 2.2.0
43.1. Highlights
Scheduled messages with the STOMP protocol.
Support for JNDIReferenceFactory and JNDIStorable.
Ability to delete queues and addresses when broker.xml changes.
Client authentication via Kerberos TLS Cipher Suites (RFC 2712).
2.1.0
43.2. Highlights
Support Netty native epoll on Linux.
Ability to configure arbitrary security role mappings.
AMQP performance improvements.
44. 2.0.0
44.1. Highlights
Huge update involving a significant refactoring of the addressing model yielding the following benefits:
Simpler and more flexible XML configuration.
Support for additional messaging use-cases.
Eliminates confusing JMS-specific queue naming conventions (i.e. “jms.queue.” & “jms.topic.” prefixes).
Pure encoding of messages so protocols like AMQP don’t need to convert messages to “core” format unless absolutely necessary.
“MAPPED” journal type for increased performance in certain use-cases.
45. 1.5.6
45.1. Highlights
- Bug fixes.
46. 1.5.5
46.1. Highlights
- Bug fixes.
47. 1.5.4
47.1. Highlights
Support Oracle12C for JDBC persistence.
Bug fixes.
48. 1.5.3
48.1. Highlights
Support “byte notation” (e.g. “K”, “KB”, “Gb”, etc.) in broker XML configuration.
CLI command to recalculate disk sync times.
Bug fixes.
49. 1.5.2
49.1. Highlights
Support for paging using JDBC.
Bug fixes.
50. 1.5.1
50.1. Highlights
Support outgoing connections for AMQP.
Bug fixes.
51. 1.5.0
51.1. Highlights
AMQP performance improvements.
JUnit rule implementation so messaging resources like brokers can be easily configured in tests.
Basic CDI integration.
Store user’s password in hash form by default.
52. 1.4.0
52.1. Highlights
“Global” limit for disk usage.
Detect and reload certain XML configuration changes at runtime.
MQTT interceptors.
Support adding/deleting queues via CLI.
New “browse” security permission for clients who only wish to look at messages.
Option to populate JMSXUserID.
“Dual authentication” support to authenticate SSL-based and non-SSL-based clients differently.
53. 1.3.0
53.1. Highlights
Better support of OpenWire features (e.g. reconnect, producer flow-control, optimized acknowledgements)
SSL keystore reload at runtime.
Initial support for JDBC persistence.
Support scheduled messages on last-value queue.
54. 1.2.0
54.1. Highlights
Improvements around performance
OSGi support.
Support functionality equivalent to all 5.x JAAS login modules including:
Properties file
LDAP
SSL certificate
“Guest”
55. 1.1.0
55.1. Highlights
MQTT support.
The examples now use the CLI programmatically to create, start, stop, etc. servers reflecting real cases used in production.
CLI improvements. There are new tools to compact the journal and additional improvements to the user experience.
Configurable resource limits.
Ability to disable server-side message load-balancing.
56. 1.0.0
56.1. Highlights
First release of the donated code-base as ActiveMQ Artemis!
Lots of features for parity with ActiveMQ “Classic” including:
OpenWire support
AMQP 1.0 support
URL based connections
Auto-create addresses/queues
Jolokia integration