STOMP ActiveMQ クライアントコンポーネント: sgcMQ | eSeGeCe

STOMP ActiveMQ クライアント

TsgcWSPClient_STOMP_ActiveMQ は、Apache ActiveMQ 向けに調整された STOMP クライアントです。ActiveMQ のデスティネーション命名規則に沿ったキューとトピックのヘルパー、すべてのイベントで受け取れる型付きヘッダーオブジェクト、そして永続サブスクリプションに必要なブローカー固有の設定を扱う ActiveMQ_Options プロパティが追加されています。

TsgcWSPClient_STOMP_ActiveMQ

汎用 STOMP クライアントの内容はすべてそのまま当てはまります。追加されるのは、デスティネーションのヘルパー、ActiveMQ 名のイベント、ブローカーのオプションです。

コンポーネントクラス

TsgcWSPClient_STOMP_ActiveMQ

準拠仕様

STOMP 1.0, 1.1 and 1.2

トランスポート

TCP (61613) or TLS (61612)

対応言語

Delphi、C++ Builder

トランスポートは素の TCP と TLS です。sgcMQ は素の TCP と TLS で ActiveMQ と通信します。ActiveMQ の STOMP-over-WebSocket コネクターは WebSocket エンドポイントなので、接続するには WebSocket クライアントを提供する sgcWebSockets のパッケージが必要です。

キューをサブスクライブし、パブリッシュする

このサンプルは、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}");

主なプロパティとメソッド

最もよく使うメンバーです。

キュー

SubscribeQueuePublishQueueUnSubscribeQueue は素のキュー名を受け取り、/queue/ デスティネーションを組み立てます。durable、exclusive、ack モードを引数で指定できます。

トピック

SubscribeTopicPublishTopicUnSubscribeTopic/topic/ デスティネーションで同じことを行います。永続サブスクリプションが最も重要になる領域です。

汎用のデスティネーション

SubscribeExPublishExUnSubscribeEx は生のデスティネーション文字列を受け取り、名前付きヘルパーでカバーできない用途に対応します。

ブローカーのオプション

ActiveMQ_Options は ActiveMQ 固有の設定を保持します。復帰した永続サブスクライバーをブローカーが識別するために使う ClientId もここに含まれます。

永続サブスクリプション

サブスクライブ用のヘルパーは Durable フラグを受け取ります。トピックのサブスクライバーは切断したあとで、ブローカーが保持していたメッセージをまとめて受け取れます。

型付きヘッダー

OnActiveMQMessageTsgcWSActiveMQSTOMPHeadersMessage と対応するサブスクリプション項目を渡すため、デスティネーション、メッセージ ID、ack モードをプロパティとして扱えます。

確認応答

サブスクライブ時に ack モードを渡し、メッセージ ID を指定して ACK または NACK を呼び出します。ackAuto では、ブローカーは送信した時点でメッセージが配信されたとみなします。

メッセージのオプション

各パブリッシュヘルパーは、コンテンツタイプ、任意のトランザクション名、そして優先度、永続化、有効期限といった ActiveMQ のヘッダー用のメッセージオプションオブジェクトを受け取ります。

接続

ClientAuthenticationHeartBeatVersionsOptions は、汎用 STOMP クライアントとまったく同じように動作します。

さらに詳しく

オンラインヘルプ完全な API リファレンスと利用ガイドです。
汎用 STOMP クライアント標準のフレームセットを備えた基底コンポーネントです。
AMQP 1.0 クライアントActiveMQ Artemis は AMQP 1.0 にも対応しています。
無料体験版をダウンロードローカルの ActiveMQ ブローカーに対して実行できます。
価格Single、Team、Site の各ライセンス。完全なソースコード付きです。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

はじめてみませんか

無料体験版をダウンロードして、Delphi や C++ Builder から STOMP 経由で ActiveMQ と通信してみましょう。