STOMP プロトコル
相互運用可能なメッセージングのための Simple Text Oriented Messaging Protocol です。Delphi アプリケーションから RabbitMQ、ActiveMQ、あらゆる STOMP 対応ブローカーに接続できます。
相互運用可能なメッセージングのための Simple Text Oriented Messaging Protocol です。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;