STOMP ActiveMQ Client

TsgcWSPClient_STOMP_ActiveMQ 是为 Apache ActiveMQ 调优的 STOMP 客户端。它在 ActiveMQ 的目的地命名之上增加了队列和主题辅助方法、每个事件上的带类型头部对象,以及持久化订阅所需的、承载消息代理专有设置的 ActiveMQ_Options 属性。

TsgcWSPClient_STOMP_ActiveMQ

通用 STOMP 客户端的一切依然适用。新增的是目的地辅助方法、ActiveMQ 专有命名事件以及消息代理选项。

组件类

TsgcWSPClient_STOMP_ActiveMQ

规范

STOMP 1.0、1.1 和 1.2

传输

TCP (61613) 或 TLS (61612)

语言

Delphi、C++ Builder

传输:纯 TCP 和 TLS。sgcMQ 通过纯 TCP 和 TLS 与 ActiveMQ 通信。ActiveMQ 的 STOMP-over-WebSocket 连接器是一个 WebSocket 端点,因此访问它需要 sgcWebSockets 包,它提供 WebSocket 客户端。

订阅队列,并向它发布

该示例使用 ActiveMQ 的原生 STOMP 端口 61613。若需加密链路,请在载体上打开 TLS,并使用该消息代理在 61612 端口上的 stomp+ssl 连接器。

uses
  sgcTCP_Client_WS, sgcWebSocket_Classes, sgcWebSocket_Protocols,
  sgcWebSocket_Protocol_STOMP_Broker_Client,
  sgcWebSocket_Protocol_STOMP_ActiveMQ_Client;

var
  TCPClient: TsgcTCPClient;
  STOMP: TsgcWSPClient_STOMP_ActiveMQ;
begin
  TCPClient := TsgcTCPClient.Create(nil);
  TCPClient.Host := 'broker.example.com';
  TCPClient.Port := 61613;

  STOMP := TsgcWSPClient_STOMP_ActiveMQ.Create(nil);
  STOMP.Client := TCPClient;
  STOMP.ActiveMQ_Options.ClientId := 'delphi-consumer-1';
  STOMP.Authentication.Enabled  := True;
  STOMP.Authentication.UserName := 'admin';
  STOMP.Authentication.Password := 'admin';

  STOMP.OnActiveMQConnected := ActiveMQConnected;
  STOMP.OnActiveMQMessage   := ActiveMQMessage;

  TCPClient.Active := True;
end;

procedure TForm1.ActiveMQConnected(Connection: TsgcWSConnection;
  Headers: TsgcWSActiveMQSTOMPHeadersConnected);
begin
  STOMP.SubscribeQueue('orders');
  STOMP.PublishQueue('orders', '{"id":42}');
end;

procedure TForm1.ActiveMQMessage(Connection: TsgcWSConnection;
  MessageText: string; Headers: TsgcWSActiveMQSTOMPHeadersMessage;
  Subscription: TsgcWSBrokerSTOMPSubscriptionItem);
begin
  Memo1.Lines.Add(Headers.Destination + ': ' + MessageText);
end;
// include: sgcTCP_Client_WS.hpp, sgcWebSocket_Protocols.hpp,
// sgcWebSocket_Protocol_STOMP_ActiveMQ_Client.hpp

TsgcTCPClient *TCPClient = new TsgcTCPClient(this);
TCPClient->Host = "broker.example.com";
TCPClient->Port = 61613;

TsgcWSPClient_STOMP_ActiveMQ *STOMP =
  new TsgcWSPClient_STOMP_ActiveMQ(this);
STOMP->Client = TCPClient;
STOMP->ActiveMQ_Options->ClientId = "cbuilder-consumer-1";
STOMP->Authentication->Enabled  = true;
STOMP->Authentication->UserName = "admin";
STOMP->Authentication->Password = "admin";

STOMP->OnActiveMQConnected = ActiveMQConnected;
STOMP->OnActiveMQMessage   = ActiveMQMessage;

TCPClient->Active = true;

// In the OnActiveMQConnected handler:
STOMP->SubscribeQueue("orders");
STOMP->PublishQueue("orders", "{\"id\":42}");

关键属性与方法

您最常使用的成员。

队列

SubscribeQueue、PublishQueue 和 UnSubscribeQueue 接受普通的队列名并构建 /queue/ 目的地,同时提供持久化、独占和确认模式参数。

主题

SubscribeTopic、PublishTopic 和 UnSubscribeTopic 对 /topic/ 目的地做同样的事,而持久化订阅在这里最为重要。

通用目的地

对于具名辅助方法未覆盖的场景,SubscribeEx、PublishEx 和 UnSubscribeEx 接受原始的目的地字符串。

消息代理选项

ActiveMQ_Options 承载 ActiveMQ 专有设置,其中包括消息代理用来识别再次连接的持久化订阅者的 ClientId。

持久化订阅

订阅辅助方法接受一个 Durable 标志,因此主题订阅者可以断开连接,之后再来取回消息代理为它保留的消息。

带类型的头部

OnActiveMQMessage 送达一个 TsgcWSActiveMQSTOMPHeadersMessage 以及对应的订阅项,因此目的地、消息 id 和确认模式都是属性。

确认

订阅时传入一个确认模式,之后用消息 id 调用 ACK 或 NACK。在 ackAuto 模式下,消息一经发出,消息代理即视其为已投递。

消息选项

每个发布辅助方法都接受一个内容类型、一个可选的事务名称,以及一个用于优先级、持久化和过期时间等 ActiveMQ 头部的消息选项对象。

连接

Client、Authentication、HeartBeat、Versions 和 Options 的行为与通用 STOMP 客户端上完全一致。

继续探索

在线帮助完整的 API 参考和使用指南。
Generic STOMP Client带标准帧集合的基础组件。
AMQP 1.0 ClientActiveMQ Artemis 同样支持 AMQP 1.0。
下载免费试用版对接本地 ActiveMQ 消息代理运行。
价格Single、Team 和 Site 授权,均含完整源代码。
超值之选:All-AccesseSeGeCe 全部产品,含高级支持,每年 €1,059 起。
查看 All-Access 价格

准备好开始了吗?

下载免费试用版,从 Delphi 或 C++ Builder 通过 STOMP 与 ActiveMQ 通信。