Version 3.5.4 of the RabbitMQ open source message broker introduced a change in the STOMP plug-in to improve compatibility with the PHP STOMP extension. Unfortunately this change breaks client applications which do not expect additional newline characters after the end marker of a STOMP frame.
In its first version (1.0.0) ActiveMQ Artemis creating temporary destinations from a STOMP client is not supported.
However, Delphi and Free Pascal applications can use Habari Client for Artemis to send messages to temporary queues which have been created by a JMS client. Once the JMS client created the queue, its full name can be transmitted to STOMP clients in the reply-to header, so that the STOMP client can respond to messages over the temporary queue.
Habarisoft announces the first version of its new Delphi and Free Pascal STOMP client library. Habari Client for Artemis is a library which provides access to the ActiveMQ Artemis free open source message broker.
About Habari Client for Artemis
Habari Client for Artemis is easy to install and configure, and provides a high-level API and programming model, based on connections, sessions, destinations, message producers, and message consumers.
Habari Client for Artemis home page:
About Apache ActiveMQ Artemis:
Apache ActiveMQ Artemis has a proven non blocking architecture. It delivers outstanding performance. Its features include AMQP protocol support, OpenWire support for ActiveMQ 5 clients, STOMP protocol support, HornetQ Core protocol support for HornetQ 2.4,2.5 clients, JMS 2.0 and 1.1 support.
ActiveMQ Artemis home page:
1.0a1 (alpha) release now available
The alpha release includes one year free updates. As a special promotion offer for early adopters, the year begins with the final 1.0 release, which is planned for Q3/2015. Also, the alpha release is offered with a 30 to 40 Euro discount compared to Habari Client libraries for other 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).
♦ Deprecated classes and methods
The Getting Started document now includes a new section which lists deprecated classes and methods.
Previous version release notes: Habari Client libraries release 2015.02
- tutorial source code from Getting Started PDF (new in 1.0.4)
- CSS based document size optimization
- extraction of embedded pictures
- hyperlink field conversion
- table conversion (experimental feature)
- slf4j logging