STOMP プロトコル

相互運用可能なメッセージングのための Simple Text Oriented Messaging Protocol です。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 を始める準備はできましたか?

体験版をダウンロードして、数分でエンタープライズメッセージブローカーに接続しましょう。