STOMP RabbitMQ Client 컴포넌트: sgcMQ | eSeGeCe

STOMP RabbitMQ Client

TsgcWSPClient_STOMP_RabbitMQ는 RabbitMQ의 목적지 규칙을 내장한 STOMP 클라이언트입니다. RabbitMQ는 목적지 문자열에 의미를 담기 때문에 /queue/, /topic/, /exchange/, /amq/queue/, /temp-queue/가 각각 다른 뜻을 가집니다. 이 컴포넌트는 그것들을 이름 있는 메서드로 바꿔 주고, 타입 있는 헤더 레코드가 원시 문자열 파싱을 대신합니다.

TsgcWSPClient_STOMP_RabbitMQ

범용 STOMP 클라이언트의 모든 기능을 그대로 사용할 수 있습니다. 추가된 것은 목적지 헬퍼와, 타입 있는 헤더 객체를 전달하는 RabbitMQ 이름의 이벤트입니다.

컴포넌트 클래스

TsgcWSPClient_STOMP_RabbitMQ

사양

STOMP 1.0, 1.1, 1.2

전송

TCP (61613) 또는 TLS (61614)

언어

Delphi, C++ Builder

전송: 일반 TCP와 TLS. sgcMQ는 일반 TCP와 TLS로 RabbitMQ STOMP 플러그인과 통신합니다. RabbitMQ의 Web-STOMP 플러그인은 WebSocket 엔드포인트이므로, 여기에 접속하려면 WebSocket 클라이언트를 제공하는 sgcWebSockets 패키지가 필요합니다.

큐를 구독하고 익스체인지에 발행하기

이 예제는 RabbitMQ STOMP 플러그인을 기본 TCP 포트인 61613으로 사용합니다. 암호화된 연결이 필요하면 캐리어에서 TLS를 켜고 포트 61614를 사용하세요.

uses
  sgcTCP_Client_WS, sgcWebSocket_Classes, sgcWebSocket_Protocols,
  sgcWebSocket_Protocol_STOMP_Broker_Client,
  sgcWebSocket_Protocol_STOMP_RabbitMQ_Client;

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

  STOMP := TsgcWSPClient_STOMP_RabbitMQ.Create(nil);
  STOMP.Client := TCPClient;
  STOMP.Authentication.Enabled  := True;
  STOMP.Authentication.UserName := 'guest';
  STOMP.Authentication.Password := 'guest';

  STOMP.OnRabbitMQConnected := RabbitMQConnected;
  STOMP.OnRabbitMQMessage   := RabbitMQMessage;

  TCPClient.Active := True;
end;

procedure TForm1.RabbitMQConnected(Connection: TsgcWSConnection;
  Headers: TsgcWSRabbitMQSTOMPHeadersConnected);
begin
  // /queue/orders, durable
  STOMP.SubscribeQueue('orders');

  // /exchange/orders with routing pattern 'create'
  STOMP.SubscribeExchange('orders', 'create');
  STOMP.PublishExchange('orders', 'create', '{"id":42}');
end;

procedure TForm1.RabbitMQMessage(Connection: TsgcWSConnection;
  MessageText: string; Headers: TsgcWSRabbitMQSTOMPHeadersMessage;
  Subscription: TsgcWSBrokerSTOMPSubscriptionItem);
begin
  Memo1.Lines.Add(Headers.Destination + ': ' + MessageText);
end;
// include: sgcTCP_Client_WS.hpp, sgcWebSocket_Protocols.hpp,
// sgcWebSocket_Protocol_STOMP_RabbitMQ_Client.hpp

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

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

STOMP->OnRabbitMQConnected = RabbitMQConnected;
STOMP->OnRabbitMQMessage   = RabbitMQMessage;

TCPClient->Active = true;

// In the OnRabbitMQConnected handler:
STOMP->SubscribeQueue("orders");
STOMP->SubscribeExchange("orders", "create");
STOMP->PublishExchange("orders", "create", "{\"id\":42}");

주요 속성 & 메서드

모든 헬퍼가 이름만 받고, 컴포넌트가 RabbitMQ 목적지 문자열을 대신 만들어 줍니다.

SubscribeQueue, PublishQueue, UnSubscribeQueue는 RabbitMQ의 /queue/ 목적지를 다루며, durable과 auto-delete, exclusive 플래그를 인자로 받습니다.

토픽

SubscribeTopic, PublishTopic, UnSubscribeTopic/topic/ 목적지를 사용하며, RabbitMQ의 amq.topic 익스체인지를 거쳐 라우팅됩니다.

익스체인지

SubscribeExchange(name, pattern)PublishExchange(name, routingKey, text)/exchange/ 목적지를 지정하며, 바인딩 패턴이 무엇을 받을지 결정합니다.

외부 큐

SubscribeQueueOutsidePublishQueueOutside/amq/queue/에 대응합니다. 다른 곳에서 선언되어 클라이언트가 다시 선언하면 안 되는 큐를 위한 것입니다.

임시 큐

SubscribeTemporaryQueue(queue, replyTo)PublishTemporaryQueue는 수명이 짧은 응답 목적지를 사용하는 RabbitMQ의 /temp-queue/ 요청/응답 패턴을 구현합니다.

범용 목적지

SubscribeEx, PublishEx, UnSubscribeEx는 원시 목적지 문자열을 받으므로 이름 있는 헬퍼가 다루지 않는 경우에 사용합니다.

타입 있는 헤더

OnRabbitMQMessageTsgcWSRabbitMQSTOMPHeadersMessage와 해당 구독 항목을 함께 전달하므로 목적지, 메시지 id, ack 모드를 부분 문자열이 아니라 속성으로 다룰 수 있습니다.

사용자 지정 헤더

모든 발행 헬퍼는 추가 헤더를 담은 TStrings를 받습니다. 메시지 우선순위, 만료, 지속성 같은 RabbitMQ 확장을 이렇게 설정합니다.

연결

Client, Authentication, HeartBeat, Versions, Options는 범용 STOMP 클라이언트에서와 똑같이 동작합니다.

계속 살펴보기

온라인 도움말전체 API 레퍼런스와 사용 안내서.
범용 STOMP Client표준 프레임 집합을 제공하는 기본 컴포넌트.
AMQP 0.9.1 ClientSTOMP가 꼭 필요하지 않다면 RabbitMQ의 기본 프로토콜.
무료 체험판 다운로드로컬 RabbitMQ 컨테이너를 상대로 실행해 보세요.
가격Single, Team, Site 라이선스, 전체 소스 코드 포함.
최고의 가성비: All-Access모든 eSeGeCe 제품과 프리미엄 지원이 포함되어 연 €1,059부터 이용할 수 있어요.
All-Access 가격 보기

시작할 준비가 되셨나요?

무료 체험판을 다운로드하고 Delphi 또는 C++ Builder에서 STOMP로 RabbitMQ와 통신해 보세요.