STOMP İstemci Bileşeni: sgcMQ | eSeGeCe

STOMP İstemcisi

TsgcWSPClient_STOMP, genel amaçlı bir STOMP 1.0, 1.1 ve 1.2 istemcisidir. STOMP bir metin çerçevesi protokolüdür; bu nedenle izlenmesi kolaydır ve bir mesajlaşma uç noktası sunan hemen hemen her broker ile çalışır. Bu bileşen standart çerçeve kümesini kapsar; RabbitMQ ve ActiveMQ için broker'a özgü türetilmiş bileşenler de mevcuttur.

TsgcWSPClient_STOMP

Kabul ettiğiniz protokol sürümlerini Versions üzerinden bildirin; broker da CONNECT alışverişi sırasında birini seçsin. Müzakere edilen sürüm OnSTOMPConnected içine gelir.

Bileşen sınıfı

TsgcWSPClient_STOMP

Spesifikasyon

STOMP 1.0, 1.1 ve 1.2

Taşıma

TCP (61613) veya TLS

Diller

Delphi, C++ Builder

Taşıma: düz TCP ve TLS. sgcMQ, düz TCP ve TLS üzerinden bağlanır. WebSocket üzerinden STOMP'a ihtiyacınız varsa, bu, WebSocket istemcisini sağlayan bir sgcWebSockets paketi gerektirir.

Bir kimlikle abone olun, ardından gönderin

STOMP, abonelikleri sizin seçtiğiniz bir kimlikle tanımlar; bu, UnSubscribe'a geçirdiğiniz kimliğin aynısıdır ve gelen her MESSAGE çerçevesinde size geri döner.

uses
  sgcTCP_Client_WS, sgcWebSocket_Classes, sgcWebSocket_Protocols,
  sgcWebSocket_Protocol_STOMP_Client;

var
  TCPClient: TsgcTCPClient;
  STOMP: TsgcWSPClient_STOMP;
begin
  TCPClient := TsgcTCPClient.Create(nil);
  TCPClient.Host := 'broker.example.com';
  TCPClient.Port := 61613;

  STOMP := TsgcWSPClient_STOMP.Create(nil);
  STOMP.Client := TCPClient;
  STOMP.Versions.V1_2 := True;
  STOMP.Options.VirtualHost := '/';
  STOMP.Authentication.Enabled  := True;
  STOMP.Authentication.UserName := 'guest';
  STOMP.Authentication.Password := 'guest';
  STOMP.HeartBeat.Enabled := True;

  STOMP.OnSTOMPConnected := STOMPConnected;
  STOMP.OnSTOMPMessage   := STOMPMessage;

  TCPClient.Active := True;
end;

procedure TForm1.STOMPConnected(Connection: TsgcWSConnection;
  Version, Server, Session, HeartBeat, RawHeaders: string);
begin
  STOMP.Subscribe('sub-0', '/queue/orders');
  STOMP.Send('/queue/orders', '{"orderId":12345}');
end;

procedure TForm1.STOMPMessage(Connection: TsgcWSConnection;
  MessageText, Destination, MessageId, Subscription, ACK, ContentType,
  RawHeaders: string);
begin
  Memo1.Lines.Add(Destination + ': ' + MessageText);
  STOMP.ACK(MessageId);
end;
// include: sgcTCP_Client_WS.hpp, sgcWebSocket_Protocols.hpp,
// sgcWebSocket_Protocol_STOMP_Client.hpp

TsgcTCPClient *TCPClient = new TsgcTCPClient(this);
TCPClient->Host = "broker.example.com";
TCPClient->Port = 61613;

TsgcWSPClient_STOMP *STOMP = new TsgcWSPClient_STOMP(this);
STOMP->Client = TCPClient;
STOMP->Versions->V1_2 = true;
STOMP->Authentication->Enabled  = true;
STOMP->Authentication->UserName = "guest";
STOMP->Authentication->Password = "guest";

STOMP->OnSTOMPConnected = STOMPConnected;
STOMP->OnSTOMPMessage   = STOMPMessage;

TCPClient->Active = true;

// In the OnSTOMPConnected handler:
STOMP->Subscribe("sub-0", "/queue/orders");
STOMP->Send("/queue/orders", "{\"orderId\":12345}");

Temel özellikler & yöntemler

En sık başvuracağınız üyeler.

Gönderme

Send(destination, text, contentType, transaction, customHeaders) bir SEND çerçevesi yazar. Son üç argüman isteğe bağlıdır; dolayısıyla basit bir gönderim iki parametreden ibarettir.

Abone olma

Subscribe(id, destination, ack, customHeaders), seçtiğiniz bir kimlik altında bir abonelik kaydeder; UnSubscribe(id) ise onu kaldırır. Onay modu varsayılan olarak ackAuto'dur.

Onaylama

ACK(id, transaction) bir mesajı onaylar, NACK(id, transaction) ise onu reddeder. Her ikisi de MESSAGE çerçevesiyle gelen mesaj kimliğini alır.

İşlemler

BeginTransaction, CommitTransaction ve AbortTransaction bir işlem adı alır. Bu adı Send ve ACK'e geçirerek onları işleme dahil edin.

Mesaj olayı

OnSTOMPMessage size gövdeyi, hedefi, mesaj kimliğini, abonelik kimliğini, onay modunu, içerik türünü ve ham başlık bloğunu verir; böylece çerçevedeki hiçbir şey kaybolmaz.

Sürüm müzakeresi

Versions.V1_0, V1_1 ve V1_2, istemcinin neyi bildireceğini denetler. Broker'ın seçtiği sürüm, OnSTOMPConnected'ın ilk argümanıdır.

Makbuzlar ve hatalar

OnSTOMPReceipt, broker bir çerçeveyi onayladığında tetiklenir; OnSTOMPError ise bir çerçeveyi reddettiğinde. Her ikisi de makbuz kimliğini ve ham başlıkları taşır.

Heartbeat

HeartBeat, CONNECT sırasında müzakere edilen giden ve gelen aralıkları yapılandırır. Ping elle bir tane gönderir ve OnSTOMPPing alışverişi bildirir.

Bağlantı seçenekleri

Options.VirtualHost, CONNECT üzerinde host başlığı olur; Options.DisconnectTimeout ise düzgün bir Disconnect'in broker'ın makbuzunu ne kadar bekleyeceğini sınırlar.

Keşfetmeye devam edin

Çevrimiçi yardımTam API referansı ve kullanım kılavuzu.
RabbitMQ için STOMPRabbitMQ hedef yardımcılarını içeren türetilmiş bileşen.
ActiveMQ için STOMPApache ActiveMQ için ayarlanmış türetilmiş bileşen.
Ücretsiz Deneme Sürümünü İndirinSTOMP destekleyen herhangi bir broker'a bağlanın.
FiyatlandırmaTam kaynak kodlu Single, Team ve Site lisansları.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

Başlamaya Hazır mısınız?

Ücretsiz deneme sürümünü indirin ve Delphi ya da C++ Builder'dan ilk STOMP çerçevenizi gönderin.