STOMP 协议
简单文本消息传递协议,实现可互操作的消息传递。从您的 Delphi 应用程序连接到 RabbitMQ、ActiveMQ 及任何兼容 STOMP 的代理。
简单文本消息传递协议,实现可互操作的消息传递。从您的 Delphi 应用程序连接到 RabbitMQ、ActiveMQ 及任何兼容 STOMP 的代理。
STOMP 提供了一种简单的基于文本的消息传递协议,可实现不同消息代理与客户端实现之间的互操作性。
STOMP 的设计目标是简单易实现。与二进制协议不同,STOMP 使用基于文本的帧格式,人类可读,调试直观。它定义了一组精简的命令 — CONNECT、SEND、SUBSCRIBE、UNSUBSCRIBE、ACK、NACK、BEGIN、COMMIT、ABORT 和 DISCONNECT — 涵盖所有常见的消息传递模式。sgcWebSockets 通过 WebSocket 连接实现 STOMP 协议,使浏览器和原生客户端均可与企业级消息代理通信。
简洁的基于文本协议,让企业级消息传递变得简单。
人类可读的帧格式使调试和开发更加直观。每个帧由命令、头部和可选的消息体组成。
与 RabbitMQ 和 ActiveMQ 消息代理完全兼容,提供企业级消息基础设施的访问能力。
简洁的命令集,涵盖连接管理、消息发送和主题订阅,语义清晰明确。
向代理请求回执确认,确保您的消息已被成功接收和处理。
使用 BEGIN、COMMIT 和 ABORT 命令,将多个 SEND 和 ACK 操作组合为原子事务。
自动保活机制,检测断开的连接并维持与代理的持久会话。
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;