Habari STOMP Client for ActiveMQ is a high-level, object-oriented STOMP client library for Delphi and Free Pascal which provides access to the ActiveMQ Classic 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.Apache ActiveMQ® Classic is a popular and powerful open source messaging and Integration Patterns server.
https://activemq.apache.org/components/classic/
It supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features.
It partially supports Jakarta Messaging 3.1 & JMS 2.0 and fully supports JMS 1.1 and J2EE 1.4+ with support for transient, persistent, transactional and XA messaging
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
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
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
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
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
Binary and text messages can be exchanged between STOMP and non-STOMP clients. (Object and map messages are exchanged as text messages)
sync
Temporary destinations are typically used to receive response messages in a request/response messaging exchange.
Not available for Artemis
filter_list
Message selectors allow a subscription to only receive a subset of the messages sent to a destination.
Not available for RabbitMQ
list
If you want to browse all the messages on a queue in a non-destructive fashion, you can create a browsing subscription.
Not available for OpenMQ and 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 ActiveMQ Classic STOMP connector supports a number of different destination types:
- /queue - SEND and SUBSCRIBE to queues managed by the STOMP gateway
- /topic - SEND and SUBSCRIBE to transient and durable topics
- /temp-queue - create temporary queues
- /temp-topic - create temporary topics
All destination types may be used with Habari STOMP Client for ActiveMQ. For details, see API documentation at IMQContext (for the simplified API) or ISession.html (for the classic API).
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;
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
Read the "Getting Started" user guide for Habari STOMP Client for ActiveMQ
Browse the online API documentation for Habari STOMP Client for ActiveMQ
Browse release notes (new features, enhancements, and bug fixes)
Frequently asked questions: use cases, licensing, and technical
Contact Habarisoft for support and sales inqueries
View the Habari STOMP Client feature matrix
get_app
Try before you buy - get the demo applications of Habari STOMP Client for ActiveMQ:
add_shopping_cart
Obtain a subscription-based Single Developer License for Habari STOMP Client for ActiveMQ:
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 ActiveMQ version 9.4 here:
Download Installer