Habari Client libraries update 2014.03.u1

Habari Client libraries are Delphi and Free Pascal libraries for application integration with five popular open source message brokers. Updated versions of these libraries are now available for download by registered users.

Tested with current message broker versions

The new release has been tested with the latest message broker versions: Apache ActiveMQ 5.9.0, Apollo 1.6, HornetQ 2.4.0.Final, Open Message Queue 5.0.1 and RabbitMQ 3.2.4

Bug fixes and improvements

  • Negotiation of heart-beat negotiation according STOMP spec (bug id 988)
  • Log CONNECT frame heart-beat intervals (bug id 984)
  • TBinaryMessageTestCase is registered in wrong test suite (bug id 983)
  • Log4D crashes with Free Pascal (bug id 977)
  • Use Id_SOL_* constants in Indy communication adapter (bug id 973)
  • Producer flow control for throughput demo application (bug id 925)
  • Equal signs in message property keys and values fail (bug id 924)

Habari Client Libraries

Habari Client libraries release 2014.03

Habarisoft announces new release

Habari Client libraries are Delphi and Free Pascal libraries for application integration with five popular open source message brokers. Updated versions of these libraries are now available. New features and improvements in this release include improved support for transacted sessions, improved support of STOMP specification for message header properties, more unit tests and documentation, and bug fixes.

Tested with current message broker versions

The new release has been tested with the latest message broker versions: Apache ActiveMQ 5.9.0, Apollo 1.6, HornetQ 2.4.0.Final, Open Message Queue 5.0.1 and RabbitMQ 3.2.4

Transaction support for message receipt acknowledgement

Transactional sending of messages was already supported in all versions of Habari Client libraries. Some library versions1 now also support commit and roll back for received messages.

To enable transacted message receive, use the CreateSession method with the transactional flag set to true and client message acknowledgment enabled (amClientAcknowledge instead of amTransactional) as shown below:

  // receive in a transacted session
  Session := Connection.CreateSession(True, amClientAcknowledge);
  Queue := Session.CreateQueue(GetQueueName);
  Consumer := Session.CreateConsumer(Queue);
  Msg := Consumer.Receive(1000);

  // process the message
  ...

  // acknowledge the message
  Msg.Acknowledge;

  ...

  // in case of critical errors, roll back acknowledgements
  Session.Rollback;

After a transaction rollback or a connection close without commit, messages which have been acknowledged after the transaction start will return to unacknowledged state.

Now with 100+ DUnit and FPCUnit tests

Tests related to unsupported features are disabled / ignored automatically.

fpcunit

Bug fixes and improvements

  • Authentication with empty credentials (login / passcode) values fails
  • Support for encoded carriage return (“r”) in STOMP 1.2 headers
  • Support for equal signs and colons in STOMP headers
  • Support for empty STOMP header values
  • Compiler errors with Free Pascal 2.7.1
  • Unit tests for wild-card destinations
  • Unit tests for queue browser

1Tested with Apache ActiveMQ 5.9.0, Apollo 1.6 and RabbitMQ 3.2.3

Habari Client libraries – new features in first 2014 release (planned for Q1)

Transaction support for message receipt acknowledgement

Transactional sending of messages was already supported in all versions of Habari Client libraries. Some library versions1 now also support commit and roll back for the acknowledgement of received messages. When a transaction is rolled back or the connection is closed without a commit, messages which have been acknowledged after the transaction start will return to unacknowledged state.

  // receive in a transacted session
  Session := Connection.CreateSession(True, amClientAcknowledge);
  Queue := Session.CreateQueue(GetQueueName);
  Consumer := Session.CreateConsumer(Queue);
  Msg := Consumer.Receive(1000);

  // process the message
  ...

  // acknowledge the message
  Msg.Acknowledge;

  ...

  // in case of critical errors, roll back acknowledgements
  Session.Rollback;

Bug fixes and improvements

Bug fixes and improvements included in the next release (planned for Q1/2014):

  • Authentication with empty credentials (user / passcode) values fails
  • Support for encoded carriage return (“r”) in STOMP 1.2 headers
  • Support for equal signs and colons in STOMP headers
  • Support for empty STOMP header values
  • Compiler errors with Free Pascal 2.7.1
  • Unit tests for wild-card destinations
  • Unit tests for queue browser

1Tested with Apache ActiveMQ 5.9.0, Apollo 1.6 and RabbitMQ 3.2.3