STOMP 프로토콜

상호 운용 가능한 메시징을 위한 Simple Text Oriented Messaging Protocol이에요. Delphi 애플리케이션에서 RabbitMQ, ActiveMQ 및 모든 STOMP 호환 브로커에 연결해요.

빠른 답변: sgcWebSockets는 STOMP 속성을 통해 TsgcWebSocketClient에 STOMP 메시징을 추가하므로, Delphi 및 C++ Builder 앱이 WebSocket 위에서 RabbitMQ, ActiveMQ 또는 모든 STOMP 브로커를 대상으로 구독, 전송, 트랜잭션 실행, heart-beat 협상을 할 수 있어요.

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 작업을 원자적 트랜잭션으로 묶어요.

Heart-Beat 협상

끊어진 연결을 감지하고 지속적인 브로커 세션을 유지하기 위한 자동 keep-alive 메커니즘이에요.

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 자주 묻는 질문

Delphi 및 C++ Builder 애플리케이션을 STOMP 브로커에 연결하는 것에 대해 자주 묻는 질문이에요.

TsgcWebSocketClient를 추가하고, Host와 Port를 설정하고, Specifications.RFC6455.Protocol'stomp'로 설정한 다음 STOMP 속성을 활성화하세요. 연결 후에는 STOMP.Subscribe를 호출해 프레임을 받고 STOMP.Send로 대상에 게시해요. 컴포넌트는 STOMP 명령 CONNECT, SEND, SUBSCRIBE, ACK, NACK, BEGIN, COMMIT, ABORT, DISCONNECT를 구현해요.
클라이언트는 RabbitMQ 및 ActiveMQ와 작동하며, 모든 STOMP 호환 메시지 브로커와도 작동해요. STOMP는 단순한 텍스트 기반 와이어 프로토콜이므로, 동일한 컴포넌트가 STOMP 사양을 구현하는 모든 서버와 통신해요.
네. BEGIN, COMMIT, ABORT로 SEND와 ACK 작업을 원자적 트랜잭션으로 그룹화하고, 브로커로부터 영수증 확인을 요청하고, STOMP.HeartBeat.OutgoingSTOMP.HeartBeat.Incoming을 통해 heart-beat 협상을 구성하여 연결을 유지하고 끊어진 세션을 감지할 수 있어요. STOMP는 브라우저 호환 메시징을 위해 WebSocket 전송 위에서 실행돼요.
sgcWebSockets는 Delphi 7부터 최신 Delphi 릴리스까지, 그리고 해당하는 C++ Builder 버전을 Windows, macOS, Linux, iOS, Android에서 지원해요. 무료 체험판을 다운로드하여 직접 프로젝트에서 STOMP 클라이언트를 평가해 보세요.

STOMP을 시작할 준비가 되셨나요?

무료 체험판을 다운로드하고 몇 분 만에 엔터프라이즈 메시지 브로커에 연결해 보세요.