Habari STOMP Client for RabbitMQ

Version 9.4, tested with RabbitMQ 4.1.0 get_app

Save €30.00 between 01 October 2025 and 21 October 2025. Details...

Habari STOMP Client for RabbitMQ is a high-level, object-oriented STOMP client library for Delphi and Free Pascal which provides access to the RabbitMQ free open source message broker.

language

With this library, developers can build integrated solutions, connecting cross language clients and protocols, using the peer-to-peer or the publish-and-subscribe communication model.

favorite_border

It is easy to configure and provides a high-level API and programming model, based on connections, sessions, destinations, message producers, and message consumers.

filter_list

The library uses the STOMP Streaming Text Oriented Messaging Protocol for its communication with the message broker, which uses an interoperable wire format.

About the RabbitMQ free open source message broker

RabbitMQ is a reliable and mature messaging and streaming broker, which is easy to deploy on cloud environments, on-premises, and on your local machine. It is currently used by millions worldwide. (source)

RabbitMQ supports several open standard protocols, including AMQP 1.0 and MQTT 5.0.

There are multiple client libraries available, which can be used with your programming language of choice, just pick one. No vendor lock-in!

https://www.rabbitmq.com/

Common Extensions

Habari STOMP Client libraries support broker-specific extensions of the STOMP specification. Most extensions and features can be used across all Habari Client Library versions. Exceptions are indicated here and in the feature matrix.

timer

Message Expiration

By default, a message never expires. If a message will become obsolete after a certain period, however, you may want to set an expiration time for the message.

traffic

Message Priority

A client can specify a priority for each message it sends. Message priorities affect the order in which the messages are delivered to the consumers.

storage

Persistent Messages

Brokers support reliable messaging by allowing messages to be persisted so that they can be recovered if there is failure which kills the broker.

pause_circle_outline

Durable Subscriptions

Even if the client which created the durable subscription is not online, he can still get a copy of all the messages sent to the topic when he comes back online.

import_export

Rich Message Conversion

Binary and text messages can be exchanged between STOMP and non-STOMP clients. (Object and map messages are exchanged as text messages)

sync

Temporary Queues

Temporary destinations are typically used to receive response messages in a request/response messaging exchange.

Not available for Artemis

Queue and Topic Destination Support with RabbitMQ

The STOMP specification does not prescribe what kinds of destinations a broker must support, instead the value of the destination header in SEND and MESSAGE frames is broker-specific. The RabbitMQ STOMP plugin supports a number of different destination types:

  • /exchange - SEND to arbitrary routing keys and SUBSCRIBE to arbitrary binding patterns
  • /queue - SEND and SUBSCRIBE to queues managed by the STOMP gateway
  • /amq/queue - SEND and SUBSCRIBE to queues created outside the STOMP gateway
  • /topic - SEND and SUBSCRIBE to transient and durable topics
  • /temp-queue/ - create temporary queues (in reply-to headers only)

All destination types may be used with Habari STOMP Client for RabbitMQ. For details, see API documentation at IMQContext (for the simplified API) or ISession.html (for the classic API).

"Hello, World!" - Send to message broker

code

Connects to a message broker instance with default port and credentials, and sends a text message.

    Factory: IConnectionFactory
    ...
    Factory := TBTConnectionFactory.Create('stomp://example.com');
    ...
    procedure SendHelloWorld;
    var
      Ctx: IMQContext;
      Destination: IDestination;
    begin
      Ctx := Factory.CreateContext;
      try
        Destination := Ctx.CreateQueue('hello_world');
        Ctx.CreateProducer.Send(Destination, 'Hello, World!');
      finally
        Ctx.Close;
      end;
    end;

"Hello, World!" - Receive from message broker

code

Connects to a message broker instance with default port and credentials, and receives a text message.

    Factory: IConnectionFactory
    ...
    Factory := TBTConnectionFactory.Create('stomp://example.com');
    ...
    procedure ReceiveHelloWorld;
    var
      Ctx: IMQContext;
      Destination: IDestination;
      Consumer: IMQConsumer;
      TextMessage: ITextMessage;
    begin
      Ctx := Factory.CreateContext;
      try
        Destination := Ctx.CreateQueue('hello_world');
        Consumer := Ctx.CreateConsumer(Destination);
        TextMessage := Consumer.Receive(2500) as ITextMessage;
        if Assigned(TextMessage) then 
          ShowMessage(TextMessage.Text);
      finally
        Ctx.Close;
      end;
    end;

Released 22 August 2025

book

Manual

Read the "Getting Started" user guide for Habari STOMP Client for RabbitMQ

search

API

Browse the online API documentation for Habari STOMP Client for RabbitMQ

list

Release Notes

Browse release notes (new features, enhancements, and bug fixes)

help_outline

FAQ

Frequently asked questions: use cases, licensing, and technical

alternate_email

Contact

Contact Habarisoft for support and sales inqueries

view_comfy

Feature Matrix

View the Habari STOMP Client feature matrix

get_app

Try before you buy - get the demo applications of Habari STOMP Client for RabbitMQ:

Free Demo Download

add_shopping_cart

Obtain a subscription-based Single Developer License for Habari STOMP Client for RabbitMQ:

Subscribe »

I agree to the License and the Terms and Conditions.


For cancellation, please click here

lock

Registered users may download the installer for Habari STOMP Client for RabbitMQ version 9.4 here:

Download Installer