58

Last modified by Erik Bakker on 2023/01/23 13:58

Update that improves the AMQP and MQTT messaging capabilities.

New Features
  • With this update, eMagiz runtimes can fulfil the role of an MQTT broker. To do this, put an Artemis server support object in your connector and make sure it accepts MQTT protocol communication over web sockets. Internally, handling these (MQTT) messages is no different from handling "normal" (AMQP) messages.
  • Updated Artemis, Qpid, Proton-J and Netty to the latest maintenance releases. These updates mostly contain bugfixes, improvements and performance wins.
Minor Changes
  • Added bundle 'com.emagiz.bundles.artemis-quorum-api' 2.19.0.1
  • Added bundle 'com.emagiz.bundles.netty-handler-proxy' 4.1.70.1
  • Added bundle 'com.emagiz.bundles.netty-transport-classes-epoll' 4.1.70.1
  • Added bundle 'com.emagiz.bundles.netty-transport-classes-kqueue' 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.artemis-server-osgi' from 2.7.0.2 to 2.19.0.1
  • Updated bundle 'com.emagiz.bundles.netty-buffer' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.netty-codec' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.netty-codec-http' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.netty-codec-mqtt' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.netty-codec-socks' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.netty-common' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.netty-handler' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.netty-resolver' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.netty-transport' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.netty-transport-native-epoll' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.netty-transport-native-kqueue' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.netty-transport-native-unix-common' from 4.1.50.1 to 4.1.70.1
  • Updated bundle 'com.emagiz.bundles.proton-j' from 0.33.5.1 to 0.33.10.1
  • Updated bundle 'com.emagiz.bundles.qpid-jms-client' from 0.48.0.1 to 0.59.0.1
  • Updated bundle 'com.emagiz.components.artemis' from 2.0.0 to 2.0.1
  • Updated bundle 'com.emagiz.components.qpid' from 2.0.0 to 2.0.1
  • Replaced bundle 'org.apache.activemq.artemis-amqp-protocol' 2.7.0 with 'com.emagiz.bundles.activemq-artemis-native' 2.19.0.1
  • Replaced bundle 'org.apache.activemq.artemis-hornetq-protocol' 2.7.0 with 'com.emagiz.bundles.artemis-hornetq-protocol' 2.19.0.1
  • Replaced bundle 'org.apache.activemq.artemis-hqclient-protocol' 2.7.0 with 'com.emagiz.bundles.artemis-hqclient-protocol' 2.19.0.1
  • Replaced bundle 'org.apache.activemq.artemis-mqtt-protocol' 2.7.0 with 'com.emagiz.bundles.artemis-mqtt-protocol' 2.19.0.1
  • Replaced bundle 'org.apache.activemq.artemis-native' 1.0.0 with 'com.emagiz.bundles.activemq-artemis-native' 1.0.2.1
  • Replaced bundle 'org.apache.activemq.artemis-stomp-protocol' 2.7.0 with 'com.emagiz.bundles.artemis-stomp-protocol' 2.19.0.1
  • Replaced bundle 'org.apache.johnzon.core' 0.9.5 with 'com.emagiz.bundles.johnzon-core' 1.2.15.1
Known Issues
  • Retrying to deliver a message from the dead-letter queue does not work, breaking the message redelivery feature. This is fixed in build 59.
Remarks
  • When upgrading a JMS server flow, the persisted messages stored in the Artemis server are automatically migrated from version 2.7.0 to 2.19.0 to guarantee a smooth upgrade process without any message loss. However, this migration process is irreversible, meaning that if for any reason you want to "downgrade" from 2.19.0 to 2.7.0 you must first use the "clean store" functionality in the deploy phase (cloud) or manually empty the Artemis 'data' directory (on-premises).
  • Because of the above, if you are upgrading a failover setup (double lane), make sure to do the upgrade in the correct order for the live and backup JMS servers:
    • Install the new build number (58) on both the live and backup servers.
    • Start the new flow on the backup server first, and when that has finished start the new flow on the live server. This step automatically migrates everything in the Artemis 'data' directory (see above).
    • When everything runs correctly again, uninstall the old flow from the backup server first and then uninstall it from the live server. While uninstalling you might notice some disruptions in the log: this is expected and should only last for a few seconds.