EE4J: Eclipse Open Message Queue (OpenMQ)

The Eclipse foundation announced the first projects for the new top level project EE4J, the successor to Java Platform, Enterprise Edition (Java EE) 8. (see also: EE4J Progress: Nine New Projects Proposed at the Eclipse Foundation by Mike Milinkovich, Executive Director of the Eclipse Foundation.

 Eclipse OpenMQ

One of the new projects will be Eclipse Open Message Queue (OpenMQ), a complete message-oriented middleware platform, which provides a reference implementation for Java™ Message Service (JMS).

Eclipse Enterprise for Java (EE4J)

Eclipse Enterprise for Java (EE4J) is an open source initiative to create standard APIs, implementations of those APIs, and technology compatibility kits for Java runtimes that enable development, deployment, and management of server-side and cloud-native applications.

Advertisements

Habari Client libraries release 2017.10

Habarisoft released its Object Pascal STOMP client libraries for Delphi and Free Pascal integration with popular free open source message brokers.

The 2017.10 release includes:

  • Habari Client for ActiveMQ 5.2 – tested with Apache ActiveMQ 5.14.5, 5.15.0 and 5.15.1
  • Habari Client for Artemis 5.2 – tested with Apache ActiveMQ Artemis 2.1.0, 2.2.0 and 2.3.0
  • Habari Client for OpenMQ 5.2 – tested with OpenMQ 5.1.1 (August 2017) and Payara Server 4.1.1
  • Habari Client for RabbitMQ 5.2 – 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 , Apache ActiveMQ Artemis and RabbitMQ message brokers to prepare initial test environment and and to evaluate test conditions. (requires Indy and SuperObject library)

 

 

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 new version 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.

Second snapshot of Habari Client libraries release 2017.10

Habarisoft released the second 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.14.5, 5.15.0, 5.15.1
  • Habari Client for Artemis 5.2.0 – tested with Apache ActiveMQ Artemis 2.1.0, 2.2.0, 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.

testswithrabbitmq3.7.0.rc1

 

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
  • tested with Lazarus 1.8 RC1 / FPC 3.0.4 RC1
  • 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.

Unit test enhancements based on broker Management API

Apache ActiveMQ, APACHE ACTIVEMQ Artemis and RabbitMQ message brokers SUPPORTED

For the upcoming Habari Client libraries release 2017.10, unit tests for three free open source message brokers now utilize a Indy-based management client to access  message broker proprietary management APIs:

  • Habari Client for ActiveMQ 5.2.0 – tested with the Apache ActiveMQ 5.15.0 message broker
  • Habari Client for Artemis 5.2.0 – tested with the Apache ActiveMQ Artemis 2.3.0 message broker
  • Habari Client for RabbitMQ 5.2.0 – tested with the RabbitMQ 3.6.12 message broker

CONDITIONAL SYMBOL

For backwards compatibility, the DUnit test suite does not access the management API by default. To enable it, the project options must define the conditional symbol HABARI_TEST_USE_MGMT_API and the DUnit test project must be rebuilt. (Free Pascal FPCUnit tests are not supported yet).

New Unit test methods

The base test class HabariTestCase now creates an instance of the management API client in its SetUp method if the symbol HABARI_TEST_USE_MGMT_API is defined. The base test class contains new check methods which may be used to write assertions in test case code, a method which creates a message queue, and a method to destroy (delete) a message queue to clean up the test environment before the test run.

CheckQueueSize(Expected: Integer; QueueName: string)

This method retrieves the current size of queue QueueName over the management API and fails if it does not equal the Expected value.

CheckQueueIsEmpty(QueueName: string)

This method retrieves the sizeof queue QueueName over the management API and fails if it does not equal zero.

CreateQueue(QueueName: string)

Creates the message queue over the management API.

DestroyQueue(QueueName: string)

Destroy the message queue over the management API.

Download

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

About Habari Client libraries

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.

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.

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.