STOMP 协议

简单文本消息传递协议,实现可互操作的消息传递。从您的 Delphi 应用程序连接到 RabbitMQ、ActiveMQ 及任何兼容 STOMP 的代理。

什么是 STOMP?

STOMP 提供了一种简单的基于文本的消息传递协议,可实现不同消息代理与客户端实现之间的互操作性。

简单、可互操作的消息传递

STOMP 的设计目标是简单易实现。与二进制协议不同,STOMP 使用基于文本的帧格式,人类可读,调试直观。它定义了一组精简的命令 — CONNECT、SEND、SUBSCRIBE、UNSUBSCRIBE、ACK、NACK、BEGIN、COMMIT、ABORT 和 DISCONNECT — 涵盖所有常见的消息传递模式。sgcWebSockets 通过 WebSocket 连接实现 STOMP 协议,使浏览器和原生客户端均可与企业级消息代理通信。

  • 人类可读的基于文本的协议
  • 兼容任何支持 STOMP 的代理
  • 精简命令集,快速开发
  • 基于 WebSocket 运行,兼容浏览器
SEND destination:/queue CLIENT BROKER

STOMP 功能

简洁的基于文本协议,让企业级消息传递变得简单。

基于文本的协议

人类可读的帧格式使调试和开发更加直观。每个帧由命令、头部和可选的消息体组成。

RabbitMQ & ActiveMQ

与 RabbitMQ 和 ActiveMQ 消息代理完全兼容,提供企业级消息基础设施的访问能力。

CONNECT/SEND/SUBSCRIBE

简洁的命令集,涵盖连接管理、消息发送和主题订阅,语义清晰明确。

回执确认

向代理请求回执确认,确保您的消息已被成功接收和处理。

事务支持

使用 BEGIN、COMMIT 和 ABORT 命令,将多个 SEND 和 ACK 操作组合为原子事务。

保活协商

自动保活机制,检测断开的连接并维持与代理的持久会话。

STOMP 使用场景

STOMP 提供简单可靠通信的企业级消息传递场景。

企业级消息队列

将 Delphi 应用程序连接到企业级消息队列,实现系统间可靠的异步通信。

微服务通信

通过基于主题的消息传递和队列模式,实现微服务之间的松耦合通信。

事件驱动架构

构建事件驱动系统,各组件响应通过 STOMP 消息代理发布的事件。

跨平台消息传递

通过通用协议,桥接不同语言和框架编写的应用程序之间的通信。

Delphi STOMP 示例

连接到 STOMP 代理,订阅目标地址,并发送消息。

uses
  sgcWebSocket_Client, sgcWebSocket_Types;

var
  WSClient: TsgcWebSocketClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.Host := 'broker.example.com';
  WSClient.Port := 15674;
  WSClient.Specifications.RFC6455.Protocol := 'stomp';

  // Configure STOMP protocol
  WSClient.STOMP.Enabled := True;
  WSClient.STOMP.Authentication.Username := 'guest';
  WSClient.STOMP.Authentication.Password := 'guest';
  WSClient.STOMP.VirtualHost := '/';
  WSClient.STOMP.HeartBeat.Outgoing := 10000;
  WSClient.STOMP.HeartBeat.Incoming := 10000;

  // Set up event handlers
  WSClient.OnSTOMPConnected := OnSTOMPConnected;
  WSClient.OnSTOMPMessage := OnSTOMPMessage;
  WSClient.OnSTOMPReceipt := OnSTOMPReceipt;
end;

procedure TForm1.ButtonConnectClick(Sender: TObject);
begin
  WSClient.Active := True;
end;

procedure TForm1.OnSTOMPConnected(Sender: TObject);
begin
  // Subscribe to a queue
  WSClient.STOMP.Subscribe('/queue/orders');
end;

procedure TForm1.OnSTOMPMessage(Sender: TObject;
  aDestination, aBody: string);
begin
  // Process incoming messages
  Memo1.Lines.Add(aDestination + ': ' + aBody);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  // Send a message to a destination
  WSClient.STOMP.Send('/queue/orders',
    '{"orderId": 12345, "status": "new"}');
end;

准备好开始使用 STOMP 了吗?

下载免费试用版,几分钟内即可连接到企业级消息代理。