Habarisoft released new versions of Habari Client libraries for Delphi and Free Pascal application integration with free open source message brokers.

Tested with current message broker versions

  • Apache ActiveMQ 5.11.1
  • Apollo 1.7.1
  • HornetQ 2.4.5.Final
  • Open MQ 5.1.1 b02
  • RabbitMQ 3.5.3

Improvements in this release

♦ Temporary destination support: unit test and ActiveMQ workaround

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)

♦ XPath selector test for ActiveMQ

The unit tests now include a test which shows XPath message selector usage. (TStompJMSBindingTests.TestXPATHSelector)

♦ Test for NACKed messages in ActiveMQ.DLQ

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)

♦ Large message test

The unit tests include a test which produces a message with 32 MB size. (TBasicTests.TestLargeBytesMessage)

♦ RabbitMQ message priority support

Habari Client for RabbitMQ has been prepared to support both JMS (0…9) and AMQP (0…255) priority ranges. Message priorities are supported by RabbitMQ 3.5, the RabbitMQ STOMP plugin however does not yet support message priorities (issue #13).

♦ Object Message argument check

The setter method TBTObjectMessage.SetObject will raise an EIllegalArgumentException if the passed object reference is nil.

♦ EConfigurationException raised for unsupported protocols

TBTAbstractConnectionFactory.CreateMQConnection now throws EConfigurationException instead of Exception when the connection URL specifies an unsupported protocol.

♦ Indy compatibility

The client library has been tested with Indy 10.6 revision 5277.


♦ Potential memory leaks

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.

♦ RabbitMQ temporary queues and RPC demo bug

A bug in the creation of message consumers for temporary destination has been fixed. (The bug also caused the RPC demo to fail).

Documentation updates

Deprecated classes and methods

The Getting Started document now includes a new section which lists deprecated classes and methods.

Online resources

Previous version release notes: Habari Client libraries release 2015.02


Habari Client Libraries