First snapshot of Habari Client libraries release 2017.10

Habarisoft released a development snapshot of its Object Pascal STOMP client libraries for Delphi and FPC integration with popular free open source message brokers. The upcoming 2017.10 release includes:

  • Habari Client for ActiveMQ 5.2.0 – tested with Apache ActiveMQ 5.15.0,
  • Habari Client for Artemis 5.2.0 – tested with Apache ActiveMQ Artemis 2.1.0, 2.2.0 and 2.3.0
  • Habari Client for OpenMQ 5.2.0 – tested with OpenMQ 5.1.1 (August 2017) and Payara Server 4.1.1
  • Habari Client for RabbitMQ 5.2.0 – tested with RabbitMQ 3.6.11, 3.6.12 and 3.7.0-rc.1 (on Erlang/OTP 20)

Unit test improvements

Apache ActiveMQ Artemis and RabbitMQ message brokers

The Habari Client DUnit test code now uses the REST API provided by Apache ActiveMQ Artemis and RabbitMQ message brokers to prepare initial test environment and and to evaluate test conditions.

For Apache ActiveMQ Artemis, the library includes a small Indy-based client for the Jolokia based REST API for its JMX management interface.  A similar client is also planned for tests of Apache ActiveMQ, which also exposes its JMX interface through Jolokia.

For RabbitMQ, a similar Indy-based client API is included which accesses the proprietary management API of the RabbitMQ broker.

 

Other improvements

  • support user:passwort@host in connection URIs
  • fixed Delphi and Free Pascal compiler warnings
  • included example class TBTQueueRequestor
  • improved logging of connection failures
  • removed code which was required for older versions of Free Pascal
  • replaced PMString type with string

Download

The development snapshot is available now for download from the Habarisoft server for registered users.

Requirements

The library requires Delphi 2009 or Free Pascal 3.0.2 (or newer).

habari_logo_2016Habari Client libraries enable Object Pascal applications to take advantage of message broker / message queue technology – which is distributed, loosely coupled, reliable and asynchronous – to build integrated systems, using peer-to-peer and publish-subscribe communication models.

Advertisements

RabbitMQ 3.6.11 free open source message broker released

The RabbitMQ team announced the release of RabbitMQ 3.6.11.

This release includes Erlang/OTP 20 support, bug fixes as well as a more precise
node RAM usage calculation strategy. See 3.6.11 change log on GitHub for details.

Binary and source distributions of the new release can be found on the downloads page, GitHub, Package Cloud, and Bintray.

 

 

Apache ActiveMQ Artemis 2.2.0 released

The Apache Software Foundation released Apache ActiveMQ Artemis 2.2.0.

Release notes: https://activemq.apache.org/artemis/release-notes-2.2.0.html

Documentation: https://activemq.apache.org/artemis/docs.html

About Apache ActiveMQ Artemis:
The Apache ActiveMQ Artemis message broker includes AMQP protocol support, OpenWire support for ActiveMQ 5 clients, MQTT support, STOMP protocol support, HornetQ Core protocol support for HornetQ 2.4,2.5 clients, JMS 2.0 and 1.1 support.

 

 

Apache ActiveMQ 5.15.0 Released

Apache ActiveMQ 5.15.0 has been released and includes many fixes and improvements. Also note that this release bumps the minimum required Java version to Java 8. A list of issues resolved in this release is available here:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311210&version=12338054
The Wiki page for the release is here:
http://activemq.apache.org/activemq-5150-release.html

Habari Client libraries release 2017.06

Habarisoft released new versions of its Object Pascal STOMP client libraries for Delphi and FPC integration with popular free open source message brokers. The 2017.06 release includes

  • Habari Client for ActiveMQ 5.1.0 – tested with Apache ActiveMQ 5.14.5,
  • Habari Client for Artemis 5.1.0 – tested with Apache ActiveMQ Artemis 2.1.0
  • Habari Client for OpenMQ 5.1.0 – tested with OpenMQ 5.1.1 and Payara Server 4.1.1
  • Habari Client for RabbitMQ 5.1.0 – tested with RabbitMQ 3.6.10.

Chat demo uses synchronous receive thread

for all supported message brokers

In version 5.1.0, the chat demo creates its own receive thread to listen for chat messages. It is recommended to receive messages synchronously in this way, as it allows customized handling of connection failures. Minimal source code changes to the demo program were neccessary to use the new receive thread.

Receive thread code

The chat demo receives incoming messages in a simple thread without error handling. To recover from connection failures, the code would need a second loop which reconnects and starts the main loop again.

  Connection := Factory.CreateConnection;
  try
    try
      Connection.Start;

      Session := Connection.CreateSession(amAutoAcknowledge);
      Destination := Session.CreateTopic(ChatTopic);
      Consumer := Session.CreateConsumer(Destination);

      while not Terminated do
      begin
        Msg := Consumer.Receive(5000);
        if Assigned(Msg) then
        begin
          TThread.Queue(nil, PrintMessage);
        end;
      end;

    except
      on E: Exception do
      begin
        // (no recovery from connection failures)
        if IsConsole then WriteLn(E.Message);
      end;
    end;
  finally
    Connection.Close;
  end;

Performance test displays broker version

for all supported message brokers

The performance test program now uses the IConnectionInterface to retrieve the broker version string when running the test. In the example screenshot below, the application has connected to the “RabbitMQ 3.6.10” broker on the local machine.

You may also collect the message rates of multiple test runs and displays the sample median. To start the long-running tests, shift-click on the run button. Taking all test samples takes around ten seconds.

Connection configuration dialog

for all supported message brokers

The example dialog now uses the IConnectionInterface to retrieve the broker version string when pinging the message broker. In the example screenshot below, the application has connected to the “RabbitMQ 3.6.10” broker on the local machine.

Unit test improvements

for all supported message brokers

The DUnit and FPCUnit now use the IConnectionInfo interface to retrieve the broker version string from the running message broker. In the example shown below, the FPCUnit GUI TestRunner has connected to the “ActiveMQ/5.14.5” message broker on the local machine during the initialization of the test runner.

In the second example, the DUnit GUI TestRunner has connected to the “RabbitMQ 3.6.10” message broker on the local machine.

STOMP 1.2

Unit tests use the STOMP 1.2 wire protocol now by default (Habari Client for OpenMQ still uses STOMP 1.0).

Requirements

The library requires Delphi 2009 or Free Pascal 3.0.2 (or newer).

Release notes

Full release notes are available at https://www.habarisoft.com/releases/2017.06/

habari_logo_2016Habari Client libraries enable Object Pascal applications to take advantage of message broker / message queue technology – which is distributed, loosely coupled, reliable and asynchronous – to build integrated systems, using peer-to-peer and publish-subscribe communication models.

Apache ActiveMQ Artemis: the follow-on to ActiveMQ

The Apache ActiveMQ Artemis message broker is planned to be the follow-on to Apache ActiveMQ, which is basically in maintenance mode. Read more about migration from ActiveMQ 5.x to Apache ActiveMQ Artemis in this user forum post.

Apache ActiveMQ Artemis is based off of HornetQ, a production broker that supported JMS. Now, Artemis is also the default messaging provider in the WildFly application server.