STOMP ActiveMQ Client 컴포넌트: sgcMQ | eSeGeCe

STOMP ActiveMQ Client

TsgcWSPClient_STOMP_ActiveMQ는 Apache ActiveMQ에 맞춘 STOMP 클라이언트입니다. ActiveMQ의 목적지 명명 규칙을 감싼 큐 헬퍼와 토픽 헬퍼, 모든 이벤트에서 제공되는 타입 있는 헤더 객체, 그리고 지속 구독에 필요한 브로커 전용 설정을 담은 ActiveMQ_Options 속성을 더했습니다.

TsgcWSPClient_STOMP_ActiveMQ

범용 STOMP 클라이언트의 모든 기능이 그대로 적용됩니다. 추가된 것은 목적지 헬퍼, ActiveMQ 이름이 붙은 이벤트, 그리고 브로커 옵션입니다.

컴포넌트 클래스

TsgcWSPClient_STOMP_ActiveMQ

사양

STOMP 1.0, 1.1, 1.2

전송

TCP (61613) 또는 TLS (61612)

언어

Delphi, C++ Builder

전송: 일반 TCP와 TLS. sgcMQ는 일반 TCP와 TLS로 ActiveMQ와 통신합니다. ActiveMQ의 STOMP over WebSocket 커넥터는 WebSocket 엔드포인트이므로, 여기에 접속하려면 WebSocket 클라이언트를 제공하는 sgcWebSockets 패키지가 필요합니다.

큐를 구독하고 큐에 발행하기

이 예제는 ActiveMQ의 기본 STOMP 포트인 61613을 사용합니다. 암호화된 연결이 필요하면 캐리어에서 TLS를 켜고 브로커의 stomp+ssl 커넥터를 포트 61612로 사용하세요.

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}");

주요 속성 & 메서드

가장 자주 사용하게 되는 멤버들입니다.

SubscribeQueue, PublishQueue, UnSubscribeQueue는 큐 이름만 받아 /queue/ 목적지를 만들어 주며, durable과 exclusive, ack 모드 인자를 함께 받습니다.

토픽

SubscribeTopic, PublishTopic, UnSubscribeTopic/topic/ 목적지에 대해 같은 일을 합니다. 지속 구독이 가장 중요한 곳이기도 합니다.

범용 목적지

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

브로커 옵션

ActiveMQ_Options는 ActiveMQ 전용 설정을 담으며, 브로커가 다시 돌아온 지속 구독자를 알아보는 데 쓰는 ClientId도 여기에 있습니다.

지속 구독

구독 헬퍼는 Durable 플래그를 받습니다. 덕분에 토픽 구독자가 연결을 끊었다가 나중에 브로커가 보관해 둔 메시지를 받아 갈 수 있습니다.

타입 있는 헤더

OnActiveMQMessageTsgcWSActiveMQSTOMPHeadersMessage와 해당 구독 항목을 함께 전달하므로 목적지, 메시지 id, ack 모드를 속성으로 다룰 수 있습니다.

확인 응답

구독할 때 ack 모드를 지정한 다음 메시지 id로 ACK 또는 NACK을 호출합니다. ackAuto에서는 메시지를 보내는 즉시 브로커가 전달된 것으로 간주합니다.

메시지 옵션

모든 발행 헬퍼는 콘텐츠 형식, 선택적 트랜잭션 이름, 그리고 우선순위와 지속성, 만료 같은 ActiveMQ 헤더를 담는 메시지 옵션 객체를 받습니다.

연결

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

계속 살펴보기

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

시작할 준비가 되셨나요?

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