Release Notes

Release 2026.10 (10.2) - first offered 02 October 2026
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 6.3.2
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.57.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 4.3.6
Release 2026.10-RC1 (10.2-RC1) - first offered 02 September 2026
  Core
✓ Fixed Reconnecting after a dropped connection no longer reuses the protocol version negotiated for the previous session.
✓ Fixed Receiving a message with a timeout no longer blocks indefinitely when no message arrives, when using the mORMot 2 connection.
✓ Fixed Read timeouts are now correctly detected when using the mORMot 2 connection.
✓ Fixed Unexpected data arriving while a heartbeat was expected is now handled correctly when using the mORMot 2 connection.
❄ New Add IMaxLineLength interface on IConnection to set the STOMP read line-length limit from code, replacing the HABARI_X_MAXLINELENGTH compile-time define.
❄ New The failover:(uri1,uri2,...) transport capability can be switched on from code.
❄ New The library now reports at startup when diagnostic logging has been switched on, so a diagnostic build is not shipped unnoticed.
❄ New Breaking change: the conditional define gating the legacy IMessageListener API has been renamed from HABARI_DEPRECATED_MESSAGELISTENER to HABARI_BROKEN_MESSAGELISTENER. A project that still defines the old name now fails to compile, with an error naming the replacement.
❄ New The bundled unit-test suite can now be built and run from the standard build script under Free Pascal, and its test runner can be selected from the command line.
❄ New The installer has a refreshed, modern appearance, offers additional installation languages, and uses a transparent logo.
❄ New Errors and exceptions are now reported through the standard logging output of slf4p consistently.
❄ New Tested with Indy 10.6.3.14.
  Examples and documentation
❄ New Update to doxygen 1.18.0
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 6.3.1
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.54.0
  Habari STOMP Client for OpenMQ
❄ New Tested with OpenMQ 6.9.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 4.3.5
Release 2026.06 (10.1) - first offered 06 June 2026
  Core
❄ New Update slf4p to 1.0.8
❄ New Update Logger instance creation to use TLoggerFactory.GetLogger(Class).
❄ New Use parametrized logging where useful.
❄ New Replace Trace method with direct Logger.Trace calls.
❄ New Tested with Indy 10.6.3.14.
  Examples and documentation
❄ New Update to doxygen 1.17.0.
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 6.2.5 (released 23 April 2026
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.54.0 (released 19 May 2026)
  Habari STOMP Client for OpenMQ
❄ New Tested with OpenMQ 6.9.0 (released 02 May 2026)
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 4.3.0 (released 23 April 2026)
Release 2026.04 (10.0) - first offered 24 April 2026
  Core
✓ Fixed Remove support code for Delphi 6
✓ Fixed Remove the JMS prefix for JMS* properties of IMessage.
✓ Fixed Remove deprecated static helper functions TBTConnection.MakeConnection. CLients should use the provided API methods to create connection factories or context factories.
✓ Fixed Remove deprecated ICompletionListener API type and related methods. Synchronous client code does not benefit of this API type much.
✓ Fixed Remove deprecated NoLocal property from ITopicSubscriber interface and TBTTopicSubscriber implementation. This was an unused property.
✓ Fixed Remove unused field NoLocal from TBTMessageConsumer class.
✓ Fixed Fix (conflicting) PE / FPC warning about initialization of a managed type in TBTAbstractCommAdapter.ReadStompHeader.
✓ Fixed Move CreateMQConnection helper methods to private scope.
✓ Fixed Updated communication adapter class for mORMot 2.4-stable.
  Examples and documentation
❄ New Update to doxygen 1.16.1.
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 6.2.0
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.51.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 4.2.2
Release 2026.02 (9.5) - first offered 06 February 2026
  Core
✓ Fixed Rename DEFAULT_TIMEOUT to DEFAULT_MESSAGELISTENER_TIMEOUT
✓ Fixed Deprecate helper method class function TBTConnection.MakeConnection
✓ Fixed Update slf4p to 1.0.4
✓ Fixed Remove JsonDataObjects from libraries
✓ Fixed MINIMUM_TIMEOUT_MS = 20
✓ Fixed TBTCommAdapterBaseIndy.ReadOneMessageNoWait checks for data
✓ Fixed Remove mORMot1 adapter
  Tests
✓ Fixed TestObjectMessage fails: interface not supported (Regression from 9.4)
✓ Fixed Add tests to fix PE warnings
✓ Fixed Adjust tests for ReveiceNoWait
✓ Fixed Rename AssertStopWatch to AssertStopWatchElapsedIsLessThan
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 6.1.7
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.42.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 4.2.2
Release 2025.08 (9.4) - first offered 22 August 2025
  Core
✓ Fixed TBTTopicSubscriber#GetNoLocal is deprecated now.
✓ Fixed Rename IStompCommAdapter method ServerExpectsHeartBeat to ServerExpectsHeartBeats.
✓ Fixed Use DEFAULT_BROKER_URL = 'stomp://127.0.0.1'; instead of DEFAULT_BROKER_URL = 'stomp://localhost';
✓ Fixed TBTAbstractConnectionFactory properties UserName and Password are write-only.
✓ Fixed Remove obsolete IContentProvider from TObjectMessage class declaration.
✓ Fixed Commented out unused code.
✓ Fixed Remove {%H-} comments.
✓ Fixed Remove most // NOPE comments from distributed source files.
✓ Fixed Remove code between IFDEF HABARI_X_SUPPORTD6 and ENDIF HABARI_X_SUPPORTD6 from distributed source files.
✓ Fixed Remove mORMot1 communication adapter and related test code.
✓ Fixed Remove property NoLocal: Boolean read FNoLocal from TBTMessageConsumer.
✓ Fixed Fixed hints and warnings.
  Tests
❄ New Tested with mORMot 2.3.
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 6.1.6
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.40.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 4.1.0
Release 2025.06 (9.3) - first offered 20 June 2025
  Core
✓ Fixed Remove deprecated constants from unit BTBrokerConsts.
✓ Fixed Remove obsolete type casts in TBTStompClient.StompDataAvailable, BTStompEncoder.Escape, and TBTStompClient.TraceFrameHeaders.
✓ Fixed Remove obsolete overload directive for TBTStompClient.TraceFrameHeaders.
✓ Fixed Fixed hints and warnings.
❄ New The ICompletionListener interface of the modern API and its implementation is deprecated, as it does not add substantial value.
❄ New Reduce visibility of methods and properties to protected which implement an interface.
❄ New Log Indy product name and version in unit BTCommAdapterBaseIndy.
❄ New Renamed setter and getter methods for JMSRedelivered and JMSDeliveryMode to follow naming conventions.
  Examples and documentation
✓ Fixed Doxygen: warning: More #endif's than #if's found.
✓ Fixed Doxygen: warning: Found ';' while parsing initializer list! (doxygen could be confused by a macro call without semicolon).
✓ Fixed Doxygen: use \cond to exclude documentation for some internal implementation classes.
✓ Fixed Doxygen: improve class diagrams by explicitly have interfaces to inherit from IInterface.
✓ Fixed Doxygen: reduce duplicated documentation comments by using INHERIT_DOCS and \copydoc.
✓ Fixed Fixed and updated links in Getting Started PDF.
❄ New Update Doxygen to version 1.14.0.
❄ New Add more HTML documentation.
❄ New Add diagram of new programming model to PDF and API docs.
❄ New Update source/optional/readme.txt.
❄ New Update copyright text.
  Tests
✓ Fixed Remove obsolete code for old decoder implementation.
✓ Fixed Remove obsolete type casts.
✓ Fixed Remove Indy version check from BTCommAdapterBaseIndy unit.
❄ New Add unit test for Indy version: IdGlobal.gsIdProductVersion must be equal to 10.6.3.
❄ New Tested with Lazarus IDE 4.0.
❄ New Tested with the Indy 10.7 branch
  Habari STOMP Client for ActiveMQ
✓ Fixed Move deprecated contant TRANSFORMER_ID_ADVISORY_JSON from BTBrokerConsts unit to broker-specific demo code in activemq-advisory/AdvisoryMessagesReceiver unit.
❄ New Tested with ActiveMQ 6.1.6
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.40.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 4.1.0
Release 2024.12 (9.2.1) - first offered 31 December 2024
  Core
✓ Fixed Fixed heartbeat detection in unit TBTAbstractCommAdapter.ReadFirstHeaderLineSkippingHeartbeats. Only tested with Internet Direct (Indy).
Release 2024.12 (9.2) - first offered 07 December 2024
  Core
✓ Fixed Fixed hints and warnings
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 6.1.4
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.38.0
  Habari STOMP Client for RabbitMQ
✓ Fixed Add a note in TBTMQTransportRabbitMQ.UnsubscribeID which explains why UNSUBSCRIBE is not sent for temporary queues. Reproduced in 4.0.2.
❄ New Tested with RabbitMQ 4.0.4 and 4.1.0-beta.1
Release 2024.08 (9.1) - first offered 03 August 2024
  Core
✓ Fixed Add abstract keyword to classes TBTAbstractCommAdapter and TBTAbstractTransport.
✓ Fixed Move fields from the protected to the private section.
✓ Fixed Add missing STOMP protocol version case labels.
✓ Fixed Use method RecvTerminated in unit BTCommAdapterBaseSynapse and move it to private section.
✓ Fixed Add condition checks to use DEFAULT_TIMEOUT only for (deprecated) message listener.
  Examples and documentation
❄ New Add link to new Synapse GitHub repository to documentation.
  Habari STOMP Client for ActiveMQ
✓ Fixed Deprecate several ActiveMQ Classic constants releated to advisory message and object message transformation.
  Habari STOMP Client for Artemis
✓ Fixed Use BrokerFeatures.SupportsTransactedAck flag to disable test case for transactional ACK.
❄ New Tested with Artemis 2.35.0
  Habari STOMP Client for OpenMQ
✓ Fixed Use BrokerFeatures.SupportsTransactedAck flag to disable test case for transactional ACK.
✓ Fixed Use BrokerFeatures.SupportsHeartbeats flag to disable test cases for heart-beating.
✓ Fixed Fixed failing test TestMgmtInterfaces which was not updated to expect STOMP 1.2
❄ New Tested with OpenMQ 6.5.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.13.4 and 4.0.0-beta.3
Release 2024.06 (9.0) - first offered 05 June 2024
  Core
✓ Fixed Fix initialization of field FNackHeaders in class TBTMessage
❄ New Changed TBTMQProducer.InternalSend method from function to procedure
❄ New Lower method visibility in TTCPClient and other classes
❄ New Remove obsolete field FURI in TBTConnectionParams
❄ New Remove obsolete exception variable E:
❄ New Remove obsolete properties in several BTCommAdapterBase* units
❄ New Migrate sub-procedures to first level procedures in BTStompEncoder and other units
❄ New Use strict private for TBTStompClient and other classes
❄ New Tested with Indy 10.6.3.3
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 6.1.2
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.33.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.13.3
Release 2024.04 (8.7) - first offered 20 April 2024
  Core
❄ New Refactor TBTStompClient class
❄ New Refactor BTFailoverURLParser class
❄ New Remove old STOMP decoder code from TBTStompDecoder class
❄ New Remove needless virtual keywords
❄ New Reduce visibility of classes, fields and methods
❄ New Suppress false positive Pascal Expert warnings
✓ Fixed Add missing GUID to interfaces
✓ Fixed Tested with Indy 10.6.3
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 6.1.0
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.33.0
  Habari STOMP Client for RabbitMQ
❄ New Add broker-specific demo for filtered streams
❄ New Tested with RabbitMQ 3.13.0
Release 2024.02 (8.6) - first offered 04 February 2024
  Core
✓ Fixed Fix Pascal Expert warnings
✓ Fixed Fix doxygen warnings
  Examples and documentation
✓ Fixed Remove empty folders in libraries folder
❄ New Update doxygen to 1.10.0
❄ New Add more HTML documentation
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.18.3 and 6.0.1
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.31.2
  Habari STOMP Client for RabbitMQ
❄ New Add broker-specific demo documentation
❄ New Tested with RabbitMQ 3.12.12 and 3.13.0-rc.4
Release 2023.12 (8.5) - first offered 09 December 2023
  Core
❄ New Test with Indy 10.6.2 rev 4565
❄ New Test with mORMot 2.1
  Examples and documentation
❄ New Add more HTML documentation
✓ Fixed Fix doxygen warnings
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.18.3 and 6.0.0
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.31.2
  Habari STOMP Client for RabbitMQ
❄ New Add broker-specific demo documentation
❄ New Tested with RabbitMQ 3.12.10 and 3.13.0-rc.2
Release 2023.10 (8.4) - first offered 28 October 2023
  Core
❄ New Test with Indy 10.6.2 rev 4553
❄ New Update doxygen to 1.9.8
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.18.3
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.31.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.12.7 and 3.13.0-rc.1
Release 2023.08 (8.3) - first offered 26 August 2023
  Core
❄ New When logging is enabled, log which STOMP receipts are enabled
❄ New Use resourcestrings in unit BTStompClient
❄ New Remove Writeln(Result) in TestHelper.BrokerVersion
❄ New Fix compiler warning in TBTAbstractCommAdapter.ReadStompHeader
❄ New Fix potential endless loop in TBTAbstractCommAdapter.ReadFirstHeaderLineSkippingHeartbeats
❄ New Omit third parameter of Copy method in newer versions of Object Pascal
❄ New Removed wrong comment for TBTCommAdapterBaseIndy.TCPCLient (property is used in TBTCommAdapterIndySSL.Create)
❄ New Update doxygen to 1.9.7
❄ New Add method IStompFrame#GetContentLength
❄ New Test with Indy 10.6.2 rev 4539
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.18.2
  Habari STOMP Client for Artemis
❄ New Delete todo comment in deprecated method (Artemis)
❄ New Tested with Artemis 2.30.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.11.20, 3.12.2, 3.13.0-beta.3
Release 2023.06 (8.2) - first offered 03 June 2023
  Core
❄ New Add new decoder for STOMP header lines (unit BTStompDecoder)
❄ New Add new interface IStompDecoder (unit BTStompInterfaces)
❄ New Add test for invalid characters in STOMP headers
❄ New Test with Indy 10.6.2 rev 4469
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.18.0
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.28.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.12.0
Release 2023.04 (8.1) - first offered 01 April 2023
  Core
❄ New Remove unused units
❄ New Remove outdated todo notes
❄ New Extract resourcestrings
❄ New Add internal methods AssertIsTrailingNull and AssertIsTrailingLf
❄ New Use CreateFmt instead of Create(Format(...))
❄ New Add doc comments for IHeartbeat interface
❄ New Commented out unused interface declarations in unit BTSessionIntf
❄ New Reduce timeout for loop in ReadFirstHeaderLineSkippingHeartbeats
❄ New Store heart-beat time when the first header line was received
❄ New Add internal methods AssertServerSendsHeartBeats and AssertTransportConnected;
❄ New Fix GetTickCount in unit BTPlatform
❄ New Add method CheckValidTimeOut
❄ New Update mORMot 2 to 2.0.stable
❄ New BTPlatform.GetTickCount returns GetTickCount64 (FPC only)
❄ New BTAdapterRegistry uses Windows only when MSWINDOWS is defined, and FPC is not defined
❄ New Add length check in ReadMessageBodyWithLength
❄ New Update code signing certificates
❄ New Suppress hints and warnings for third party units (FPC)
❄ New Test with Indy 10.6.2 rev 4441
  Tests
❄ New Add test TestHeadersAreNotTrimmed
❄ New Add test TestConnectFailsWithMQException
❄ New Suppress warnings and hints for Indy, Synapse, and mORMot (Delphi only)
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.18.0
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.28.0
  Habari STOMP Client for OpenMQ
✓ Fixed Fixed ReadMessageBodyWithLength
❄ New Tested with OpenMQ 6.4.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.11.12
Release 2023.02 (8.0) - first offered 11 February 2023
  Core
❄ New Rename unit BTJMSInterfaces to BTMQInterfaces
❄ New Move exceptions to new unit BTGlobal
❄ New Remove unused exceptions
❄ New Use EMQException instead of SysUtils.Exception / EConnectionFailedException
❄ New ReceiveHeartbeat raises an exception if there is something else than a heart-beat waiting on the socket
❄ New Add support for Synopse mORMot 1
❄ New Add support for Synopse mORMot 2
❄ New Use ssl_openssl3 instead of ssl_openssl in the complimentary Synapse communication adapter for TLS/SSL
❄ New Remove deprecated unit BTStompReadThreadSynapse
❄ New Test with Indy 10.6.2 rev 4421
  Tests
❄ New Run tests for all available communication adapters (except for TLS/SSL)
❄ New Removed switch HABARI_TEST_SYNAPSE
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.17.3
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.28.0
  Habari STOMP Client for OpenMQ
❄ New Tested with OpenMQ 6.3.0 and 6.4.0-SNAPSHOT
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.10.17 and 3.11.8
Release 2022.12 (7.3) - first offered 03 December 2022
  Core
❄ New Update Ararat Synapse to revision r266
❄ New Update JsonDataObjects (support for Delphi 11.0 Alexandria)
❄ New Add experimental communication adapter for Synopse mORMot SynCrtSock
❄ New Add test for a 4 byte Unicode code point
❄ New Tested with Indy 10.6.2 (revision 4159)
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.16.5 and 5.17.2
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.26.0 and 2.27.0
  Habari STOMP Client for OpenMQ
❄ New Tested with OpenMQ 6.3.0 and 6.4.0-SNAPSHOT
  Habari STOMP Client for RabbitMQ
❄ New Add an example project for user generated queue names for topic and exchange destinations (x-queue-name)
❄ New Tested with RabbitMQ 3.10.11 and 3.11.3
Release 2022.08 (7.2) - first offered 06 August 2022
  Core
❄ New Insert new header values before old header values instead ignoring them (STOMP 1.2 specification: Repeated Header Entries)
❄ New Failover protocol support can be enabled with the new conditional symbol HABARI_ENABLE_FAILOVER_PROTOCOL
❄ New Use Generics (Delphi and Free Pascal)
❄ New Tested with Indy 10.6.2 revision 4081
  Examples and documentation
✓ Fixed Fix missing TBTSession API documentation
✓ Fixed Improved exception handling in Habari Chat demo application
  Habari STOMP Client for ActiveMQ
✓ Fixed Fixed unit test TestForward
❄ New Include a TomEE+ (Jakarta EE 9.1) example in demo-broker
❄ New Tested with ActiveMQ 5.16.5 and 5.17.1
  Habari STOMP Client for Artemis
✓ Fixed Fixed unit test TestForward
❄ New Tested with Artemis 2.23.1
  Habari STOMP Client for OpenMQ
✓ Fixed Fixed warning about obsolete header subscription-id for ACK frame
✓ Fixed Fixed unit test TestForward
❄ New Use STOMP 1.2 by default (unit BTBrokerConsts)
❄ New Include a Payara 5 (Jakarta EE 9.1) example in demo-broker
❄ New Tested with OpenMQ 6.3.0
Ⓘ Open With STOMP 1.2, unit tests for temp queues and message ack fail because of an issue in the OpenMQ STOMP bridge STOMP 1.2 value encoding is not implemented
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.9.22 and 3.10.7
Release 2022.06 (7.1) - first offered 04 June 2022
  Core
❄ New Moved units BTThread, BTStompReadThreadIndy, BTStompReadThreadSynapse to optional folder
❄ New Tested with Indy 10.6.2 revision 4075
  Examples
✓ Fixed Failover protocol support improvements
❄ New Connection configuration dialog form improvements
❄ New New connection test demo application
❄ New Document TLS switch passthrough
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.16.5 and 5.17.1
  Habari STOMP Client for Artemis
❄ New FQQN demo (send to queue given its fully qualified name)
❄ New Tested with Artemis 2.22.0
  Habari STOMP Client for OpenMQ
❄ New Tested with GlassFish 6.2.3
  Habari STOMP Client for RabbitMQ
✓ Fixed Incorrect conversion of missing expiration header
❄ New Tested with RabbitMQ 3.9.18, 3.10.0, 3.10.1 and 3.10.2
Release 2022.02 (7.0) - first offered 02 February 2022
  Core
❄ New Handle non-standard server replies to CONNECT by disconnecting and raising a EConnectionFailed exception
❄ New Moved exception class definitions from BTJMSTypes to BTTypes
❄ New Removed code for old map/object message transformation API
❄ New Removed unit BTJMSTypes
❄ New Renamed EJMSException to EMQException
❄ New Removed needless synchronization in TBTSession.Send method
❄ New Tested with Indy 10.6.2 revision 4066
❄ New Tested with Lazarus 2.2.0
❄ New Tested with Free Pascal 3.2.2
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.15.15 and 5.16.3
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.20.0
  Habari STOMP Client for OpenMQ
❄ New Tested with GlassFish 6.2.3
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.9.12
Release 2021.12 (6.12) - first offered 06 December 2021
  Core
❄ New Class TBTMQContext implements interface IConnectionInfo
❄ New Class TBTMQContext implements interface IHeartbeat
❄ New Added HABARI_USE_INTERCEPT_STDOUT switch to enable logging of STOMP frames to the console (Windows only)
❄ New Increased minimum required FPC version to 3.2.0
❄ New Commented out deprecated transformation API code
  Examples and documentation
❄ New Updated 'HabariChat' example application (added heart-beating)
❄ New Updated 'Performance Test' example application
❄ New Added connection troubleshooting section to Getting Started PDF
❄ New Added loadbalancing demo
❄ New Removed NativeXml from libraries
❄ New Removed management API from library
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.15.15 and 5.16.3
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.19.0
❄ New Tested XPATH selector support (new in 2.18.0)
  Habari STOMP Client for RabbitMQ
✓ Fixed Error in broker log when unsubscribing durable subscriber
✓ Fixed Error UNSUBSCRIBE 'id' may not start with /temp-queue/
❄ New Added example project for RabbitMQ streams RabbitMQ Streams Overview
❄ New Added example project for non-durable queues
❄ New Tested with RabbitMQ 3.8.26 and 3.9.11
Release 2021.08 (6.11) - first offered 14 August 2021
✓ Fixed FPC 3.0.4 compilation error in TSimpleObjectMessageTransformer.ProducerTransform
✓ Fixed Failing string conversion test with FPC 3.2.0
❄ New If the STOMP ERROR frame contains a 'receipt-id' header, its value will be included in the EBTStompServerErrorMessage exception message
❄ New The client closes the TCP connection after receiving a STOMP ERROR frame
❄ New Code cleanup / maintenance in the included 'Performance Test' demo project
❄ New Improved and simplified test for client ACK
❄ New The complimentary connection builder class now provides the method BuildContext: IMQContext which returns a IMQContext instance - IMQContext is part of the new API which was introduced in release 6.0
❄ New Added a deprecation warning for FPC versions before 3.2.0. This is the last release with support for FPC 3.0.4 - future versions will require FPC 3.2.0 or newer
❄ New Tested with Lazarus 2.2.0RC1 / FPC 3.2.2
❄ New Tested with Indy 10.6.2 revision 3914
❄ New Updated Innosetup installer to 6.2.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.8.19 and 3.9.0
Release 2021.06 (6.10) - first offered 26 June 2021
❄ New Added a check that the map message transformation ID and the object message transformation ID are not equal
❄ New Removed unit tests for old (deprecated) message transformation API
❄ New Added unit test for new message transformation API, using MQContext API (which has been introduced in version 6.0)
❄ New Added a compiler warning which appears when the old (deprecated) message transformation API is enabled
❄ New Implement interface IMessageTransformerSupport in class TBTMQContext when the old (deprecated) message transformation API is enabled
❄ New Moved message transformation IDs for the transformation API to the broker-specific unit BTBrokerConst
❄ New Removed experimental TCP keep-alive feature, instead the STOMP heart-beating may be used
❄ New Improved handling of incoming heart-beat (EOL bytes)
❄ New Removed a check for incoming heart-beats when no heart-beats are expected, this caused higher timeout times for Receive(Integer) method calls
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.16.2
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.8.17
Release 2021.04 (6.9) - first offered 21 April 2021
❄ New The new API interface IMQContext contains the function CreateMapMessage(): IMapMessage
❄ New The new API interface IMQContext contains the function CreateObjectMessage(): IObjectMessage
❄ New The new API interface IMQContext contains the function CreateObjectMessage(AObject: TObject): IObjectMessage
❄ New BTMessageTransformer moved to optional source directory
❄ New Updated to doxygen 1.9.1
❄ New Tested with Indy 10.6.2 rev 3798, Delphi 2009, Lazarus 2.0.10 / Free Pascal 3.2.0
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.16.1
❄ New Use new map message transformation API in Advisory Message demo
❄ New Use new map message transformation API in Broker Statistics demo
✓ Fixed Added documentation and improved output messages in demo applications
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.17.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.8.14 on Erlang 23.2
Release 2021.02 (6.8) - first offered 20 February 2021
❄ New Tested with Indy 10.6.2 rev 3662, Delphi 2009, Lazarus 2.0.10 / Free Pascal 3.2.0
❄ New New support API for map messages and object messages
❄ New Installer applications are now digitally signed
❄ New Console output for unit test logging now includes test class name and test method name
❄ New Add tests cases for IMessageTransformer, BTConnection.SetMapMessageTransformer and BTConnection.SetObjectMessageTransformer
❄ New Moved management API from Superobject to JsonDataObjects
❄ New Removed support for OmniXML
❄ New Removed support for Superobject
✓ Fixed Fixed FPC warnings about uninitialized values
✓ Fixed Renamed IMessageTransfomerIdSupport to IMessageTransformerIdSupport
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.16.0
❄ New Added a test for queue browser API. This test replaces the external demo program for queue browsing.
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.16.0
❄ New Added support for queue browser API
✓ Fixed Fixed failing unit tests
  Habari STOMP Client for OpenMQ
❄ New Tested with Eclipse GlassFish 6.0.0
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.8.9 and 3.8.11
Release 2020.12 (6.7) - first offered 12 December 2020
❄ New Tested with Indy 10.6.2 rev 3660, Delphi 2009, Lazarus 2.0.10 / Free Pascal 3.2.0
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.16.0
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.16.0
Ⓘ Open Several unit tests fail with ActiveMQ Artemis
  Habari STOMP Client for OpenMQ
❄ New Tested with Eclipse Open Message Queue (OpenMQ) 5.1.3
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.8.9
Release 2020.06 (6.7) - first offered 20 June 2020
❄ New Tested with Indy 10.6.2 rev 3645, Delphi 2009, Lazarus 2.0.4 / Free Pascal 3.0.4
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.15.13
❄ New Support advisory message transformation header 'jms-advisory-json'
❄ New Added a basic example for advisory message receive
  Habari STOMP Client for ActiveMQ Artemis
❄ New Tested with Artemis 2.11.0, 2.12.0 and 2.13.0
❄ New Changed STOMP destination prefixes to /queue and /topic (for details please see the 'Getting Started' PDF)
Ⓘ Open Several unit tests fail with ActiveMQ Artemis
  Habari STOMP Client for OpenMQ
❄ New Tested with Eclipse Open Message Queue (OpenMQ) 5.1.3
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.8.4
Release 2020.04 (6.5) - first offered 04 April 2020
❄ New Tested with Indy 10.6.2 rev 3645, Delphi 2009, Lazarus 2.0.4 / Free Pascal 3.0.4
❄ New Includes a newer version of the NativeXml XML parser library (https://github.com/kattunga/NativeXml) which supports newer versions of Delphi
❄ New Development now uses the GitHub version of the Indy Sockets TCP/IP library (https://github.com/IndySockets/Indy), please note that Indy distributions are no longer available on https://indy.fulgan.com/
✓ Fixed Example code which used the SuperObjects library has been removed
✓ Fixed Renamed compiler conditional define TEST_OPTIONAL_UNITS to HABARI_TEST_OPTIONAL_UNITS
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.15.11 and 5.15.12
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.9.0, 2.10.0 and 2.10.1
Ⓘ Open Several unit tests fail with ActiveMQ Artemis 2.11.0
  Habari STOMP Client for OpenMQ
❄ New Tested with Eclipse Open Message Queue (OpenMQ) 5.1.3
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.8.2 and 3.8.3
Release 2019.12 (6.4) - first offered 08 December 2019
❄ New Tested with Indy 10.6.2 rev 5515, Delphi 2009, Lazarus 2.0.4 / Free Pascal 3.0.4
❄ New Support for custom NACK frame headers
✓ Fixed Failover URL may contain heart-beat configuration parameters
  Habari STOMP Client for ActiveMQ
❄ New Tested with ActiveMQ 5.15.10
  Habari STOMP Client for Artemis
❄ New Tested with Artemis 2.10.1
  Habari STOMP Client for OpenMQ
❄ New Tested with Eclipse Open Message Queue (OpenMQ) 5.1.3
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.8.0
Release 2019.08 (6.3) - first offered 23 August 2019
❄ New Tested with Indy 10.6.2 rev 5515, Delphi 2009, Lazarus 2.0.2 / Free Pascal 3.0.4
❄ New Include JsonDataObjects for object serialization example code (map transformation)
❄ New Lower timeout value in HabariChat demo
❄ New Documentation updates (URL parameters are case sensitive)
❄ New Exact match check for URI parameters
✓ Fixed compilation error in unittests if TEST_OPTIONAL_UNITS is defined
✓ Fixed compilation error in unittests if HABARI_DEPRECATED_MESSAGELISTENER is defined
✓ Fixed compilation error in ObjectExchangeTests (missing BrokerFeatures unit)
✓ Fixed IPrimitiveMap.ContainsKey must return True for properties even if value is empty (string)
✓ Fixed AV in HabariChat demo caused by unassigned message
  Habari STOMP Client for ActiveMQ
❄ New Test with ActiveMQ 5.15.9
  Habari STOMP Client for Artemis
❄ New Test with Artemis 2.9.0
  Habari STOMP Client for OpenMQ
❄ New Test with Eclipse Open Message Queue (OpenMQ) 5.1.3
  Habari STOMP Client for RabbitMQ
❄ New Test with RabbitMQ 3.7.17
Release 2019.06 (6.2) - first offered 05 June 2019
  Habari STOMP Client for ActiveMQ
❄ New Test for message group header JMSXGroupID
❄ New Test for exclusive consumers (activemq.exclusive header on SUBSCRIBE)
❄ New Test with JDK 12.0.1 and OpenJDK 11.0.2 LTS
❄ New Test with ActiveMQ 5.15.9
  Habari STOMP Client for Artemis
❄ New Test for message group header JMSXGroupID
❄ New Test noLocal flag
❄ New Documentation of anycastPrefix broker.xml entry for queue auto-creation, required for unit tests
❄ New Test with JDK 12.0.1 and OpenJDK 11.0.2 LTS
❄ New Test with Artemis 2.8.1
✓ Fixed Unit test fixes
  Habari STOMP Client for OpenMQ
❄ New Test with Eclipse Open Message Queue (OpenMQ) 5.1.3
  Habari STOMP Client for RabbitMQ
❄ New Test with Erlang 22.0
❄ New Test with RabbitMQ 3.7.15
❄ New Test with RabbitMQ 3.8.0 beta 4
Release 2019.02 (6.1) - first offered 02 February 2019
❄ New Support for non-Unicode Delphi (tested with Delphi 6, uses VER140 conditional)
❄ New Separated unit tests and integration tests
❄ New Use 64 Bit code if LINUX64 is defined (experimental Linux support, only compatible with Delphi 10.3 Rio)
✓ Fixed Fixed compiler error if HABARI_USE_INTERCEPT is enabled but HABARI_LOGGING is not
✓ Fixed Use platform-specific line separator sLinebreak
✓ Fixed Resolved compiler hints and warnings
Release 2018.10 (6.0) - first offered 06 October 2018
❄ New New simple API, based on MQContext, MQProducer and MQConsumer (old API still may be used)
❄ New Asynchronous message receive is no longer supported, the IMessageListener interface has been removed. This reduces the client library size as no reader thread code is needed anymore.
❄ New Removed old low-level logging code (HABARI_RAW_TRACE), instead, new Indy-based communication log (HABARI_USE_INTERCEPT) can be used
❄ New TBTMessageConsumer performs a check for matching consumer ID and throws an exception if an unexpected id is received
❄ New New connection URL parameter “message.subscription_check=false” allows to subscribe from multiple destinations with a single consumer
❄ New Intercept (HABARI_USE_INTERCEPT) log file name now includes a random value to avoid file in use errors
❄ New Tested with Indy 10.6.2 rev 5475
Release 2018.08 (5.5) - first offered 18 August 2018
❄ New Message interceptor API for low-level custom logging
❄ New Support transformation header for temporary queues
❄ New Support compilation without Indy sources in project search path
❄ New Raise exception if a message already has a receipt id header
❄ New Make receipt ids longer (include time stamp)
❄ New Tested with Indy 10.6.2 rev 5473
❄ New Use {$IFNDEF FPC} instead {$IFDEF UNICODE}
✓ Fixed String conversion warnings in StubServerTests unit
✓ Fixed BTThread conditions for deprecated TThread suspend / resume (D2010 and higher)
✓ Fixed Undefined escape sequences such as \t (octet 92 and 116) MUST be treated as a fatal protocol error
✓ Fixed Avoid exception if serialized XML or JSON object is an empty string
✓ Fixed Hide warnings in NativeXML, NativeXMLObjectStorage units
  Habari STOMP Client for ActiveMQ
❄ New Removed warning 'FPC 3.0.0 contains a bug which causes wrong message expiration values'
Ⓘ Open ActiveMQ does not encode/decode carriage returns in headers to/from \r (as required by the STOMP 1.2 specification) STOMP 1.2 specification: Value encoding
  Habari STOMP Client for OpenMQ
❄ New Removed warning 'FPC 3.0.0 contains a bug which causes wrong message expiration values'
Release 2018.04 (5.4) - first offered 20 April 2018
  Habari STOMP Client for ActiveMQ
❄ New Tested with Apache ActiveMQ 5.15.3
  Habari STOMP Client for Artemis
❄ New Tested with Apache ActiveMQ Artemis 2.4.0 and 1.5.6
  Habari STOMP Client for OpenMQ
❄ New Tested with Payara 5
❄ New Tested with Open MQ 5.1.1 (August 2017)
  Habari STOMP Client for RabbitMQ
❄ New Tested with RabbitMQ 3.7.4
  Habari STOMP Client for all versions
❄ New Tested with Indy 10.6.2 rev 5446
❄ New Enforce Indy 10: if the Indy version is not 10 compilation will fail with an error
❄ New Unit tests: new methods THabariTestCase.StartStopwatch / AssertStopWatch
❄ New Unit tests: new test case ReceiveNoWaitDoesNotBlock
✓ Fixed Unit tests: fixed FPC warnings
✓ Fixed Unit tests: fixed test TestTransactionRollbackForACK for brokers which do not support transacted receive
✓ Fixed Unit tests: TLocalStompServer in StubServerTests closes the connection after sending the ERROR frame (as per STOMP specification)
Release 2018.02 (5.3) - first offered 18 February 2018
❄ New The library now supports connection URL parameters for receipt request configuration – receipt requests can be configured for the SUBSCRIBE, UNSUBSCRIBE, SEND, ACK, NACK, BEGIN, COMMIT, ABORT and DISCONNECT frame, the client raises an exception if it the receipt does not arrive in time. Note: this is work in progress.
❄ New The library detects invalid connection URL parameter names and raises an exception if it contains unknown parameters. The detection can be switched off with a conditional symbol (HABARI_ALLOW_UNKNOWN_URL_PARAMS). Note that parameters are case sensitve.
❄ New The unit test suite includes a stub STOMP server for heart-beat tests, the server is derived from the Indy TCP server implementation TIdCustomTCPServer and runs embedded in the unit test executable
❄ New Method StompProtocolVersion of the IConnectionInfo interface returns the protocol version of the active connection
❄ New Use the ConnectTimeout value also as read time-out for the CONNECTED frame
❄ New Removed unused properties in TBTMessageConsumer
❄ New Tested with Free Pascal 3.0.4 / Lazarus 1.8
❄ New Added test cases for TBTConnectionFactory.ConnectTimeOut (Indy only)
❄ New Documentation updates: (deprecation list, limitations with Free Pascal)
❄ New Tested with Apache ActiveMQ 5.15.1, 5.15.2, 5.15.3 and Indy 10.6.2 rev 5446 (ActiveMQ)
❄ New Tested with Apache ActiveMQ Artemis 2.3.0, 2.4.0 and Indy 10.6.2 rev 5446 (Artemis)
❄ New Tested with Open MQ 5.1.1 (August 2017) and Indy 10.6.2 rev 5446 (OpenMQ)
❄ New Tested with RabbitMQ 3.6.15, 3.7.2, 3.7.3 and Indy 10.6.2 rev 5446 (RabbitMQ)
✓ Fixed Fixed logging output of connect time out in TBTStompClient.Connect
✓ Fixed Fixed unit tests for ActiveMQ Artemis tests
✓ Fixed Fixed HABARI_LOGGING_RAW_TRACE
✓ Fixed Fixed minor bug in ConnectTimeout
✓ Fixed Fixed reply-to parameter handling for OpenMQ
✓ Fixed Fixed empty subscription header in reply-to messages
Release 2017.10 (5.2) - first offered 20 October 2017
❄ New Tested with Apache ActiveMQ 5.15.0, 5.15.1 and Indy 10.6.2 rev 5436 (ActiveMQ)
❄ New Tested with Apache ActiveMQ Artemis 2.1.0, 2.2.0, 2.3.0 and Indy 10.6.2 rev 5436 (Artemis)
❄ New Tested with Open MQ 5.1.1 (August 2017) and Indy 10.6.2 rev 5436 (OpenMQ)
❄ New Tested with RabbitMQ 3.6.11, 3.6.12, 3.7.0-rc.1 and Indy 10.6.2 (RabbitMQ)
❄ New Added DUnit test extensions which use the broker-specific JMX-based management API (ActiveMQ)
❄ New Added DUnit test extensions which use the broker-specific JMX-based management API (Artemis)
❄ New Added DUnit test extensions which use the broker-specific REST-based management API (RabbitMQ)
❄ New FPCUnit tests using Lazarus 1.8 RC4/FPC 3.0.4 RC1
❄ New Added support for STOMP connection URLs with user:password@host syntax to pass user credentials
❄ New Added BTQueueRequestor in example code
❄ New Added logging with error level if connect fails
❄ New Added constants for failover options
❄ New Added constants for Ack modes
❄ New Added 'not recommended' hint where IMessageListener is used (HabariChat)
❄ New Added comment in SSL adapter class to show how TLS 1.2 can be configured exclusively
❄ New Replaced unneccessary PMString type with string type
❄ New Replaced OnAfterTransportConnected event with AfterSocketConnected
❄ New Removed FPC 2 workaround for TFormatSettings which is available in FPC 3
✓ Fixed Fixed test failure in TestMessageForOtherSubInWaitForReceiptFrame (related to HABARI_RAW_TRACE)
✓ Fixed Fixed a compiler warning in TBTSession.Send
✓ Fixed Fixed compiler warning - UnsubscribeDurable is now virtual
✓ Fixed Fixed several compiler warnings in TBTCommAdapter
Ⓘ Open Artemis 2.3.0 error messages
Release 2017.06 (5.1) - first offered 30 June 2017
❄ New Tested with Apache ActiveMQ 5.14.5 and Indy 10.6.2 rev 5426 (ActiveMQ)
❄ New Tested with Apache ActiveMQ Artemis 2.1.0 and Indy 10.6.2 rev 5426 (Artemis)
❄ New Tested with Open MQ 5.1.1 and Indy 10.6.2 rev 5426 (OpenMQ)
❄ New Tested with RabbitMQ 3.6.10 and Indy 10.6.2 5426 (RabbitMQ)
❄ New Updated documentation on asynchronous delivery, IMessageListener will become deprecated
❄ New Performance demo optionally runs multiple times to calculate median result (shift+click start button)
❄ New Chat demo updated to work without Consumer.MessageListener
❄ New ConsumerTool updated to work without Consumer.MessageListener
❄ New Performance demo footer panel shows the version string of currently connected message broker
❄ New Connection configuration demo form shows the version string of currently connected message broker
❄ New Connections use STOMP 1.2 by default (ActiveMQ, Artemis, RabbitMQ)
❄ New DUnit test GUI shows the version string of currently connected message broker
❄ New FPCUnit test GUI shows the version string of currently connected message broker
❄ New Removed unused BTQueueBrowser unit (Artemis, OpenMQ, RabbitMQ)
❄ New Removed unused BTQueueRequestor unit
❄ New Refactored and removed BTResourceStrings unit
❄ New Refactored and removed ActiveMQTypes unit
❄ New Constant declarations (SH_DURABLE_SUBSCRIBER_NAME, SH_NOLOCAL) moved to unit BTBrokerConsts
✓ Fixed Fixed unit test TestMessageForOtherSubInWaitForReceiptFrame
✓ Fixed Fixed unit test TestUnicodeWithLanguageNames error ACK: [BSS4012]: Invalid value id for header (OpenMQ)
✓ Fixed Fixed unit test TestReceiveNoWaitMany error ACK: [BSS4012]: Invalid value id for header (OpenMQ)
✓ Fixed Fixed warning 'Private symbol 'GetServerAndConnectionInfo' declared but never used' (RabbitMQ)
✓ Fixed Fixed missing doxygen documentation for IConnectionInfo and other interfaces
Release 2017.04 (5.0) - first offered 29 April 2017
❄ New Tested with current broker versions ActiveMQ 5.14.5, Artemis 2.0.0 and RabbitMQ 3.6.9
❄ New Tested with Indy 10.6.2 v 5412
❄ New Tested with Free Pascal 3.0.2
❄ New Tested with IPv6
❄ New Added IConnectionInfo interface which gives access to broker version string and STOMP version of the current connection
❄ New Added logging of broker version string and STOMP protocol version number
❄ New Added logging of detected message type of incoming STOMP message (text, binary, object, map)
❄ New Added a check for unsupported character sets in the content-type header of incoming text messages
❄ New Added a warning at compile time for Free Pascal 3.0.0, since a bug in LocalTimeToUniversal function may cause wrong message expiration time (bug has been fixed in Free Pascal 3.0.2)
❄ New Added a DUnit/FPCUnit base test class which provides a parameter-compatible ExpectException method for FPCUnit
❄ New Added a conditional symbol (HABARI_TEST_SYNAPSE) to enables Synapse communication adapter in DUnit/FPCUnit tests, default is Indy
❄ New Changed DUnit/FPCUnit tests use STOMP 1.2 by default
❄ New Reorganzied DUnit/FPCUnit tests, added documentation section on unit tests
✓ Fixed Fixed doxygen warnings
✓ Fixed Removed support for Free Pascal 2.6.* and non-Unicode Delphi
✓ Fixed Removed HABARI_USE_WIDESTRING conditional symbol
✓ Fixed Fixed unit test for NoLocal flag handling (Apache ActiveMQ Artemis)
✓ Fixed Applied workaround for RabbitMQ 3.5.4 or newer (which is now the minimum supported version) (RabbitMQ)
Release 2017.02 (4.5) - first offered 02 February 2017
❄ New Tested with current broker versions ActiveMQ 5.14.3, Artemis 1.5.1 and RabbitMQ 3.6.6
❄ New Added SetBoolean / GetBoolean methods to the MapMessage interface
❄ New Added JMS MapMessage and ObjectMesssage demo (ActiveMQ)
❄ New Added example for auto-delete and priority in Getting Started PDF (RabbitMQ)
❄ New Added an exception when client ack is used on consumer of a temporary queue (RabbitMQ)
❄ New Added BTConnectionConst unit for connection URL parameter constants
❄ New Added logging of inbound STOMP message body whith HABARI_RAW_TRACE_BODY
❄ New Added removal of destination URL parameters in a SEND frame
✓ Fixed Replaced TBTJMSConnection usage with TBTConnection
✓ Fixed Fixed a ompilation error with OmniXML by Kluug.net
✓ Fixed Removed lkJSON from distribution
✓ Fixed Removed direct Log4D dependencies (for logging, the library uses SLF4P exclusively)
✓ Fixed Removed Log4D from distribution
✓ Fixed Removed deprecated TBTJMSConnectionFactory
✓ Fixed Removed objectpool from distribution
✓ Fixed Removed HABARI_USE_SLF4P_LOGGING conditional symbol
Ⓘ Open A Free Pascal 3.0.0 bug in LocalTimeToUniversal causes wrong message expiration timestamp values (bug report)
Ⓘ Open A workaround is still required for the Synapse communication adapter when used with RabbitMQ 3.5.4 and newer. To enable it, define the HABARI_RABBITMQ_354_UP conditional symbol. Note: programs which define this symbol are not compatible with older versions of RabbitMQ.
Release 2016.10 (4.4) - first offered 01 October 2016
❄ New Tested with current broker versions ActiveMQ 5.14.0 and RabbitMQ 3.6.5, and with Internet Direct (Indy) version 10.6.2 5367
❄ New Added exchange destination demo (RabbitMQ)
✓ Fixed Unit tests create a distinct queue per unit test to reduce potential side effects
✓ Fixed Fixed usage of with keyword
✓ Fixed Updated SLF4P logging facade library and added a deprecation warning for direct usage of Log4D (without SLF4P)
✓ Fixed Documentation fixes for scheduler demo project (ActiveMQ)
✓ Fixed Queue browser demo project (ActiveMQ)
✓ Fixed With Artemis 1.4.0, distinction between text and binary messages now works as expected again (Artemis)
✓ Fixed Fixed subscribing to /exchange destinations (RabbitMQ)
✓ Fixed Specifying NoLocal or non-empty message selectors will cause exceptions (RabbitMQ)
Ⓘ Open A Free Pascal 3.0.0 bug in LocalTimeToUniversal causes wrong message expiration timestamp values (bug report)
Ⓘ Open A workaround is still required for the Synapse communication adapter when used with RabbitMQ 3.5.4 and newer. To enable it, define the HABARI_RABBITMQ_354_UP conditional symbol. Note: programs which define this symbol are not compatible with older versions of RabbitMQ.
Release 2016.04 (4.3) - first offered 16 April 2016
❄ New Added support for the SLF4P logging facade which provides bindings to the LazLogger, Log4D, and other logging implementations
❄ New Tested with current broker versions ActiveMQ 5.13.2 and RabbitMQ 3.6.1, and with Internet Direct (Indy) version 10.6.2 5353
✓ Fixed Enforce check of matching clientId and subscription name for STOMP 1.0 (ActiveMQ) (AMQ-3917)
✓ Fixed Fixed unit test TestReceiveMessagesFromOtherSubscription (Artemis)
✓ Fixed The 'Message Priority' demo project sets the 'x-max-priority' header on SEND and SUBSCRIBE frames and uses separate connections for producer and consumer (RabbitMQ)
✓ Fixed Changed default installation folder to common documents
✓ Fixed Documentation fixes
Ⓘ Open A Free Pascal 3.0.0 bug in LocalTimeToUniversal causes wrong message expiration timestamp values (bug report)
Ⓘ Open A workaround is still required for the Synapse communication adapter when used with RabbitMQ 3.5.4 and newer. To enable it, define the HABARI_RABBITMQ_354_UP conditional symbol. Note: programs which define this symbol are not compatible with older versions of RabbitMQ.
Release 2015.12 (4.2) - first offered 16 December 2015
❄ New Example console program project for sending and receiving of a Unicode text message in demo/unicode
❄ New Example console program project for sending a message within a transaction in demo/transactions
❄ New Internet Direct (Indy) communication adapter consumes EOLs between STOMP frames according to the STOMP 1.2 specification
❄ New Support for subscribing to composite destinations with ActiveMQ 5.12.2/5.13.0 (broker-specific feature supported only by Habari Client for ActiveMQ) (AMQ-6030)
❄ New Tested with Internet Direct (Indy) version 10.6.2 5317
❄ New Tested broker specific STOMP header 'x-max-priority' with RabbitMQ 3.5.6
✓ Fixed Free Pascal 3.0.0 warnings about unsafe string casts
✓ Fixed JMSDestination property value is nil in incoming message
✓ Fixed JMSExpiration property value is zero after send completed
✓ Fixed Duplicate declaration of exception type EIllegalStateException
✓ Fixed IMessageConsumer#Dispatch method is not required in interface
Ⓘ Open A Free Pascal 3.0.0 bug in LocalTimeToUniversal causes wrong message expiration timestamp values (bug report)
Ⓘ Open A workaround is still required for the Synapse communication adapter when used with RabbitMQ 3.5.4 and newer. To enable it, define the HABARI_RABBITMQ_354_UP conditional symbol. Note: programs which define this symbol are not compatible with older versions of RabbitMQ.
Release 2015.10 (4.1) - first offered 24 October 2015
❄ New The new conditional symbol HABARI_SSL_SUPPORT enables SSL support code. (Important note: SSL is an optional feature, no support is included in the basic support plan)
❄ New The method TBTStompClient.AddConnectOptions no longer adds a ‘default’ HOST header
❄ New All messages which have a content type starting with ‘text/’ are treated as text messages (RabbitMQ)
❄ New Deprecated functions in TJMSConnectionFactory have been replaced by constants in BTBrokerConsts
✓ Fixed A bug has been fixed which caused the client to not wait for a receipt frame
✓ Fixed Deleting durable subscriptions from the client now works as expected with RabbitMQ
✓ Fixed A workaround is included for a breaking change in version 3.5.4 of RabbitMQ and newer
Release 2015.06 (4.0) - first offered 24 June 2015
❄ New The setter method TBTObjectMessage.SetObject will raise an EIllegalArgumentException if the passed object reference is nil
❄ New TBTAbstractConnectionFactory.CreateMQConnection now throws EConfigurationException instead of Exception when the connection URL specifies an unsupported protocol
❄ New The unit tests include a test which produces a message with 32 MB size. (TBasicTests.TestLargeBytesMessage)
❄ New (RabbitMQ) The library supports both JMS (0…9) and AMQP (0…255) priority ranges
❄ New The library versions for ActiveMQ, Apollo, OpenMQ and RabbitMQ support temporary queues. Temporary destinations are typically used to receive response messages in a request/response messaging exchange. This release includes a unit test which demonstrates the work flow in a RPC style communication, where a temporary queue is used by the client to receive the server replies. Also, a problem with addressing temporary queues of ActiveMQ message brokers surfaced in this test, and a workaround is included in the test. (TStompJMSBindingTests.TestTemporaryQueue)
❄ New The unit tests now include a test which shows XPath message selector usage. (TStompJMSBindingTests.TestXPATHSelector)
✓ Fixed This release fixed a potential memory leak which occured in the error handling of method TBTAbstractConnectionFactory.CreateMQConnection when unsupported protocols are specified in the broker connection URL
✓ Fixed (RabbitMQ) A bug in the creation of message consumers for temporary destination has been fixed. (The bug also caused the RPC demo to fail)
✓ Fixed The unit tests for ActiveMQ dead letter queue usage has been fixed. Tests showed that messages have to be sent with the persistent flag to appear in the ActiveMQ.DLQ destination. (TStomp12TestCase.TestClientNackOneMessage)
Release 2015.02 (3.9) - first offered 21 February 2015
❄ New As a preparation for further code streamlining between library versions, a new API compatible factory class TBTConnectionFactory is included in this version which will replace TBTJMSConnectionFactory in the next major release
❄ New If Log4D logging is enabled, the passcode header value will be not be logged but replaced with *** in the log output
❄ New Several units which are not covered by basic support have been moved to the source/optional directory (BTMessageTransformer*, BTStreamhelper, SSL support units)
❄ New Refactorings reduce unit dependencies and hard type casts in several places
❄ New Removed unused procedure TBTStompClient.Connect(const AURI: IURI)
❄ New The unit tests now include a test which shows XPath message selector usage. (TStompJMSBindingTests.TestXPATHSelector)
✓ Fixed The throughput test application uses the subscribe.receipt=true connection parameter to ensure that the broker is ready before the producer starts sending messages
Release 2014.09 (3.8) - first offered 10 September 2014
❄ New changed the Receive methods to update the heart-beat timestamp when heart-beats arrive, even if no message has been received. With this change, it is no longer required to call the CheckHeartbeat method periodically if no message arrived
❄ New ITextMessage.Text is now of type string instead of WideString
❄ New persistent messages will be sent with a receipt request
❄ New Eliminate duplicate code in map message transformers
❄ New Added a check that the STOMP frame ends with a NUL byte and raise a EBTStompError if a non-NUL byte is found, to indicate a STOMP protocol violation (and a potential loss of data)
❄ New Added a transformer class for map message exchange based on the Superobject JSON library
❄ New Added a transformer class for map message exchange based on the default XML parser library in Delphi (IXMLDocument)
❄ New Added class TBTConnectionBuilder which can be used to construct a connection by chaining configuration methods (experimental/unsupported code)
❄ New Added Free Pascal version of ConsumerTool application
❄ New Added unit tests for durable subscriptions
❄ New Added unit tests and a mock server to verify that the library detects a connection loss
❄ New Added Free Pascal version of throughput test application
✓ Fixed Unhandled Exceptions in WaitForReceiptFrame are re-raised to notify client code about the exception
✓ Fixed Fixed compiler error undeclared identifier ‘ShortDateFormat’ when using Log4D with newer Delphi versions
✓ Fixed Fixed Free Pascal compiler warning about deprecated ShortDateFormat in Log4D
✓ Fixed Fixed Free Pascal compiler error ‘unknown identifier: TClassList’ and run time error SIGSGEV (Linux)
✓ Fixed Fixed CurrentUTC method by using LocalTimeToUniversal (Free Pascal)