sgcMQ: Delphi & C++ Builder를 위한 MQTT, AMQP, Kafka & STOMP 클라이언트
단독 제품 Windows, Linux, macOS, iOS & Android

sgcMQ: Delphi & C++ Builder를 위한 MQTT, AMQP, Kafka & STOMP 클라이언트

7개 클라이언트 컴포넌트가 MQTT 3.1.1과 5.0, AMQP 0.9.1, AMQP 1.0, Apache Kafka 와이어 프로토콜, STOMP 1.0부터 1.2까지를 처리하며, RabbitMQ와 ActiveMQ 전용 STOMP 클라이언트도 함께 제공합니다. 모든 와이어 형식을 라이브러리 안에서 Object Pascal로 직접 해석하고 작성하므로, 외부 클라이언트 라이브러리도 DLL도 래퍼도 함께 배포할 필요가 없습니다. sgcMQ는 단독 제품으로, 기반이 되는 sgcWebSockets Core 런타임을 함께 포함하므로 별도로 구매해야 할 기본 라이선스가 없습니다.

기본 라이선스 불필요
전체 소스 코드
6개 대상 플랫폼, 하나의 코드베이스
캐리어 하나로 TsgcTCPClient 일반 TCP 또는 TLS, 모든 프로토콜에 동일한 소켓
MQTT TsgcWSPClient_MQTT
AMQP 0.9.1 TsgcWSPClient_AMQP
AMQP 1.0 TsgcWSPClient_AMQP1
Kafka TsgcWSPClient_Kafka
STOMP TsgcWSPClient_STOMP
RabbitMQ용 STOMP TsgcWSPClient_STOMP_RabbitMQ
ActiveMQ용 STOMP TsgcWSPClient_STOMP_ActiveMQ
7 클라이언트 컴포넌트 컴포넌트 팔레트의 한 페이지
5 프로토콜 계열 MQTT, AMQP 0.9.1, AMQP 1.0, Kafka, STOMP
6 대상 플랫폼 Win32, Win64, Linux64, macOS, iOS, Android
0 외부 라이브러리 librdkafka도, Paho도, Qpid도, DLL도 없음
1 전송 캐리어 TsgcTCPClient 하나가 전부를 담당

먼저 알아 두면 좋은 두 가지

sgcMQ에 무엇이 필요하고 바이트가 브로커에 어떻게 도달하는지, 두 답 모두 간단합니다.

★ 기본 라이선스 불필요

sgcMQ는 자체 완결형 제품입니다

기본 제품 위에 얹히지 않습니다. 컴포넌트에 필요한 모든 것이 sgcMQ 안에 들어 있습니다. sgcWebSockets Core 런타임, TCP 캐리어 TsgcTCPClient, TLS 레이어, JSON 헬퍼까지 포함됩니다. 하나의 SKU, 하나의 설치 프로그램으로 끝이며 추가로 구매할 것이 없습니다.

모든 라이선스에 전체 소스 코드가 함께 제공되므로, 프로토콜 구현이 바이너리 속으로 사라지지 않고 직접 디버거로 단계별 추적이 가능합니다.

전송 범위

sgcMQ는 일반 TCP와 TLS를 사용합니다

이 패키지의 모든 프로토콜이 원시 소켓 위에서 동작하며, 소켓은 일반 연결로 열리거나 TLS로 감싸집니다. MQTT, AMQP, Kafka, STOMP가 일반적으로 배포되는 방식인 브로커의 기본 포트를 그대로 지원하며, 패키지에 들어 있는 것 외에 필요한 것이 없습니다.

MQTT over WebSocket이나 Web-STOMP처럼 프로토콜을 WebSocket 위에서 실행하려면 WebSocket 클라이언트가 필요하고, 이는 sgcMQ가 아니라 sgcWebSockets에 포함되어 있습니다. 선택하기 전에 브로커가 어떤 전송을 제공하는지 확인하세요.

7개 클라이언트, 5개 프로토콜 계열

각각 폼에 올리거나 코드에서 생성하는 비시각 컴포넌트입니다. Client 속성으로 캐리어를 연결하고 프로토콜 이벤트를 연결한 다음, 각 프로토콜의 고유 동작을 호출하면 됩니다. 7개 모두 이름 규칙이 일관되므로 하나를 익히면 나머지도 대부분 그대로 쓸 수 있습니다.

MQTT컴포넌트 1종

발행과 구독, 그리고 QoS 처리 전반

TsgcWSPClient_MQTTMQTTVersion 속성 하나로 MQTT 3.1.1과 MQTT 5.0을 모두 다룹니다. QoS 0, 1, 2를 지원하며 PUBACK, PUBREC, PUBREL, PUBCOMP 교환을 감추지 않고 이벤트로 노출합니다. 보존 메시지, Last Will and Testament, 와일드카드 구독, 재개 가능한 세션도 지원합니다. 버전 5에서는 이유 코드, 사용자 속성, 토픽 별칭, 공유 구독, 그리고 챌린지/응답 방식을 위한 AUTH 왕복이 추가됩니다.

TsgcWSPClient_MQTT MQTT 3.1.1 · MQTT 5.0
AMQP컴포넌트 2종

이름만 같을 뿐 서로 다른 두 프로토콜

TsgcWSPClient_AMQP는 RabbitMQ가 기반으로 삼은 프로토콜인 AMQP 0.9.1을 다룹니다. 채널, 익스체인지와 큐 선언, 바인딩, 컨슈머, 발행자 확인 응답, prefetch QoS, 트랜잭션을 지원합니다. TsgcWSPClient_AMQP1은 Azure Service Bus와 Event Hubs의 기반이 되는 OASIS 및 ISO/IEC 19464 표준인 AMQP 1.0을 다룹니다. 컨테이너, 세션, 송신 및 수신 링크, 크레딧 기반 흐름 제어, SASL, Claims-Based Security 토큰 헬퍼를 지원합니다. 와이어 형식도 객체 모델도 다르기 때문에, sgcMQ는 하나의 API로 둘을 억지로 묶지 않고 각각에 컴포넌트를 제공합니다.

Apache Kafka컴포넌트 1종

바이너리 프로토콜과 직접 통신

TsgcWSPClient_Kafka는 v2 레코드 배치 형식을 포함해 TCP 위의 Kafka 와이어 프로토콜로 통신합니다. 앞단의 REST 프록시도 아래의 librdkafka도 필요하지 않습니다. 원하는 acks 수준과 gzip 압축으로 단일 레코드나 배치를 생산하고, 코디네이터 검색과 조인, 동기화, 하트비트, 리밸런스가 자동으로 처리되는 그룹으로 소비하거나, 오프셋을 지정해 파티션을 직접 읽을 수 있습니다. 오프셋 커밋, 토픽 생성과 삭제, 그룹 조회, 브로커 기능 확인 모두 일급 호출로 제공됩니다.

TsgcWSPClient_Kafka 프로듀서 · 컨슈머 그룹 · 관리
STOMP컴포넌트 3종

범용 클라이언트 하나와 브로커별 방언 둘

TsgcWSPClient_STOMP는 STOMP 1.0, 1.1, 1.2를 처리합니다. SEND, SUBSCRIBE, UNSUBSCRIBE, ACK, NACK, 수신 확인, 양방향 하트비트, 그리고 BEGIN, COMMIT, ABORT 트랜잭션 프레임을 지원하며, 허용할 버전은 Versions로 알립니다. 두 파생 컴포넌트는 브로커의 목적지 규칙을 이름 있는 메서드로 바꿔 줍니다. RabbitMQ에는 /queue, /topic, /exchange, /amq/queue, /temp-queue 헬퍼가, ActiveMQ에는 큐와 토픽 헬퍼에 더해 브로커 고유 헤더를 위한 ActiveMQ_Options 속성이 제공됩니다.

공개된 프로토콜, 브로커는 여러분의 선택

sgcMQ는 특정 벤더 SDK를 감싸는 대신 사양 자체를 구현하므로, 이 프로토콜들을 와이어에서 처리하는 모든 브로커가 후보가 됩니다. 자체 호스팅 브로커든 관리형 클라우드 서비스든 코드 변경 없이 동일한 컴포넌트가 동작하며, 브로커를 바꾸는 일은 호스트와 포트, 자격 증명을 바꾸는 것으로 끝납니다.

RabbitMQ TsgcWSPClient_AMQP

AMQP 0.9.1을 네이티브로 지원합니다. STOMP 및 MQTT 플러그인도 각각의 컴포넌트로 사용할 수 있습니다.

Apache Kafka TsgcWSPClient_Kafka

9092에서 동작하는 브로커 고유의 바이너리 프로토콜, 그리고 Kafka 와이어 호환 브로커 전반.

Eclipse Mosquitto TsgcWSPClient_MQTT

대표적인 경량 MQTT 브로커로, 1883의 일반 연결 또는 8883의 TLS 연결을 사용합니다.

HiveMQ TsgcWSPClient_MQTT

공유 구독과 사용자 속성을 포함한 완전한 MQTT 5.0.

EMQX TsgcWSPClient_MQTT

자체 호스팅이든 벤더 클라우드든 MQTT 3.1.1과 5.0을 지원합니다.

Apache ActiveMQ TsgcWSPClient_STOMP_ActiveMQ

61613의 STOMP, 또는 AMQP 1.0 컴포넌트로 Artemis에 연결하는 AMQP 1.0.

Azure Service Bus TsgcWSPClient_AMQP1

Claims-Based Security 헬퍼를 갖춘 AMQP 1.0이며, Event Hubs도 동일한 컴포넌트로 사용합니다.

AWS IoT Core TsgcWSPClient_MQTT

캐리어의 TLSOptions로 설정하는 클라이언트 인증서 기반 TLS 위의 MQTT.

모든 프로토콜 아래 하나의 캐리어

프로토콜 컴포넌트의 Client 속성에 TsgcTCPClient를 할당하면 프레임이 소켓으로 바로 나갑니다. 암호화, 프록시 통과, IPv6, 재연결은 모두 그 캐리어의 설정이므로 한 번만 구성하면 되고, 위에 올라가는 프로토콜이 MQTT든 AMQP든 Kafka든 STOMP든 동일하게 동작합니다.

MQTT 3.1.1과 5.0 TsgcWSPClient_MQTT
TCP1883기본 MQTT 리스너입니다.
TLS8883캐리어에서 TLS를 켜세요.
AMQP 0.9.1 TsgcWSPClient_AMQP
TCP5672RabbitMQ의 기본 리스너입니다.
TLS5671amqps 리스너입니다.
AMQP 1.0 TsgcWSPClient_AMQP1
TCP5672포트 번호는 같지만 프로토콜은 다릅니다.
TLS5671Azure Service Bus가 기대하는 포트입니다.
Apache Kafka TsgcWSPClient_Kafka
TCP9092평문 리스너입니다.
TLS9093브로커의 SSL 리스너가 설정된 포트입니다.
STOMP, RabbitMQ 플러그인 TsgcWSPClient_STOMP_RabbitMQ
TCP61613네이티브 STOMP 포트입니다.
TLS61614플러그인의 암호화 리스너입니다.
STOMP, ActiveMQ TsgcWSPClient_STOMP_ActiveMQ
TCP61613네이티브 STOMP 커넥터입니다.
TLS61612브로커의 stomp+ssl 커넥터입니다.

범용 TsgcWSPClient_STOMP도 STOMP를 지원하는 모든 브로커에 대해 61613을 사용합니다. 이 값들은 관례적인 기본값이며, 캐리어의 Port에는 실제 배포 환경이 수신하는 포트를 지정하면 됩니다.

원하는 방식의 TLS

TLSOptions.IOHandler로 크로스플랫폼 빌드에는 OpenSSL을, OpenSSL 바이너리를 함께 배포하고 싶지 않은 Windows에서는 SChannel을 선택합니다. 상호 TLS는 PEM 파일, PKCS#12 번들, Windows 인증서 저장소에서 클라이언트 인증서를 읽습니다.

재연결과 연결 유지

캐리어의 WatchDog이 연결이 끊긴 뒤 설정한 간격과 시도 횟수만큼 재연결하며, 각 프로토콜도 자체 연결 확인 수단을 더합니다. MQTT keep-alive ping, AMQP 하트비트, STOMP 하트비트, Kafka 컨슈머 그룹 하트비트가 그것입니다.

프록시와 IPv6

HTTP CONNECT 프록시 지원이 캐리어에 있으므로 사내 프록시 뒤의 브로커에도 접근할 수 있고, IPv6 브로커 주소에는 별도 설정이 필요하지 않습니다.

폴링 루프가 아닌 이벤트

읽기는 전용 스레드에서 실행되고 수신 프레임은 타입이 지정된 이벤트로 도착합니다. OnMQTTPublish, OnAMQPBasicDeliver, OnKafkaMessage, OnSTOMPMessage가 그것입니다. VCL 및 FMX 코드에서는 캐리어의 알림 설정으로 이벤트를 메인 스레드로 전달하세요.

MQTT로 구독하고 발행하기

TsgcTCPClient를 프로토콜 컴포넌트와 짝지어 자격 증명을 설정하고 이벤트를 연결한 다음, 프로토콜의 동작을 호출하세요. Object Pascal과 C++ Builder에서 형태가 같고, 나머지 6개 컴포넌트도 같은 형태입니다.

uses
  sgcTCP_Client_WS, sgcWebSocket_Classes, sgcWebSocket_Types,
  sgcWebSocket_Protocols, sgcWebSocket_Protocol_MQTT_Client,
  sgcWebSocket_Protocol_MQTT_Message;

var
  TCPClient: TsgcTCPClient;
  MQTT: TsgcWSPClient_MQTT;
begin
  TCPClient := TsgcTCPClient.Create(nil);   // plain MQTT over TCP
  TCPClient.Host := 'broker.example.com';
  TCPClient.Port := 1883;
  TCPClient.WatchDog.Enabled := True;

  MQTT := TsgcWSPClient_MQTT.Create(nil);
  MQTT.Client := TCPClient;
  MQTT.MQTTVersion := mqtt5;
  MQTT.Authentication.Enabled  := True;
  MQTT.Authentication.UserName := 'sgc';
  MQTT.Authentication.Password := 'sgc';

  MQTT.LastWillTestament.Enabled := True;
  MQTT.LastWillTestament.Topic   := 'devices/sensor-01/status';
  MQTT.LastWillTestament.Message := 'offline';
  MQTT.LastWillTestament.QoS     := mtqsAtLeastOnce;
  MQTT.LastWillTestament.Retain  := True;

  MQTT.OnMQTTConnect := MQTTConnect;
  MQTT.OnMQTTPublish := MQTTPublish;

  TCPClient.Active := True;
end;

procedure TForm1.MQTTConnect(Connection: TsgcWSConnection;
  const Session: Boolean; const ReasonCode: Integer;
  const ReasonName: string;
  const ConnectProperties: TsgcWSMQTTCONNACKProperties);
begin
  MQTT.Subscribe('sensors/+/temperature', mtqsAtLeastOnce);
  MQTT.Publish('devices/sensor-01/status',
    'online', mtqsAtLeastOnce, True);   // retained
end;

procedure TForm1.MQTTPublish(Connection: TsgcWSConnection;
  aTopic, aText: string;
  PublishProperties: TsgcWSMQTTPublishProperties);
begin
  Memo1.Lines.Add(aTopic + ' = ' + aText);
end;

// For an encrypted broker: same code, TLS on the carrier.
TCPClient.Port := 8883;
TCPClient.TLS  := True;
// include: sgcTCP_Client_WS.hpp, sgcWebSocket_Protocols.hpp,
// sgcWebSocket_Protocol_MQTT_Client.hpp,
// sgcWebSocket_Protocol_MQTT_Message.hpp

TsgcTCPClient *TCPClient = new TsgcTCPClient(this);   // plain MQTT over TCP
TCPClient->Host = "broker.example.com";
TCPClient->Port = 1883;
TCPClient->WatchDog->Enabled = true;

TsgcWSPClient_MQTT *MQTT = new TsgcWSPClient_MQTT(this);
MQTT->Client = TCPClient;
MQTT->MQTTVersion = mqtt5;
MQTT->Authentication->Enabled  = true;
MQTT->Authentication->UserName = "sgc";
MQTT->Authentication->Password = "sgc";

MQTT->LastWillTestament->Enabled = true;
MQTT->LastWillTestament->Topic   = "devices/sensor-01/status";
MQTT->LastWillTestament->Message = "offline";
MQTT->LastWillTestament->QoS     = mtqsAtLeastOnce;
MQTT->LastWillTestament->Retain  = true;

MQTT->OnMQTTConnect = MQTTConnect;
MQTT->OnMQTTPublish = MQTTPublish;

TCPClient->Active = true;

void __fastcall TForm1::MQTTPublish(TsgcWSConnection *Connection,
    UnicodeString aTopic, UnicodeString aText,
    TsgcWSMQTTPublishProperties PublishProperties)
{
  Memo1->Lines->Add(aTopic + " = " + aText);
}

MQTT->Subscribe("sensors/+/temperature", mtqsAtLeastOnce);
MQTT->Publish("sensors/room1/temperature",
  "{\"value\":22.5,\"unit\":\"C\"}", mtqsAtLeastOnce, true);

// For an encrypted broker: same code, TLS on the carrier.
TCPClient->Port = 8883;
TCPClient->TLS  = true;

6개 대상 플랫폼, 예외 조건 없음

메시징 패키지에는 플랫폼 제한이 없습니다. 7개 클라이언트 전부와 그 아래의 캐리어가 컴파일러가 생성하는 모든 대상에 등록되며, Windows 서비스부터 Android 단말까지 하나의 소스 트리에서 나옵니다.

7개 프로토콜 클라이언트 전부 MQTT, AMQP 0.9.1, AMQP 1.0, Kafka, 그리고 STOMP 클라이언트 3종
Windows Win32 Windows Win64 Linux64 macOS iOS Android
TsgcTCPClient 캐리어 소켓, TLS, 프록시, IPv6, WatchDog 재연결
Windows Win32 Windows Win64 Linux64 macOS iOS Android
TLS 엔진 TLSOptions.IOHandler로 선택
OpenSSL, 모든 대상 SChannel, Windows 전용
IDE 지원 하나의 소스 트리, 버전별 디자인 타임 패키지
Delphi 7부터 13까지 C++ Builder
WebSocket 캐리어 MQTT over WebSocket, Web-STOMP 등
sgcMQ에는 없음 sgcWebSockets 패키지 필요

기능 페이지에서 전체 표준 및 플랫폼 표 보기 →

단독으로 완결되는 패키지

sgcMQ는 단독으로 라이선스되며 개발자 1인 기준 €249부터 시작합니다. 모든 라이선스에 전체 소스 코드, 1년간의 업데이트, 50%에서 70%까지의 갱신 할인이 포함됩니다. 팩 1개를 갱신하면 50%, 2개는 60%, 3개 이상은 70%입니다. sgcAI와 sgcMQ는 각각 한 팩으로 계산됩니다.

sgcMQ

€249

Single, Team, Site 라이선스를 제공합니다.

  • MQTT 3.1.1 & 5.0 클라이언트
  • AMQP 0.9.1 & AMQP 1.0 클라이언트
  • Apache Kafka 클라이언트
  • STOMP, RabbitMQ & ActiveMQ 클라이언트
  • sgcWebSockets Core 런타임 포함
  • Delphi & C++ Builder, 6개 대상 플랫폼 전부
  • 전체 소스 코드
  • 1년간의 업데이트
★ 기본 라이선스 불필요

sgcMQ에는 sgcWebSockets Core 런타임이 포함되어 있으므로 추가로 구매할 것이 없습니다.

결제 화면에는 두 항목이 표시됩니다. 0원으로 청구되는 sgcWebSockets Core 런타임 사용 권한과 sgcMQ 패키지 자체입니다. 자세한 가격 정보.

3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30일 환불 보장만족하지 않으세요? 구매 후 30일 이내에 전액 환불을 요청하세요. 환불 정책 보기

Delphi에서 브로커와 대화하세요

MQTT, AMQP, Kafka, STOMP를 네이티브로 구현해 하나의 패키지로 제공하며, 런타임이 함께 포함되고 전체 소스 코드가 들어 있습니다. 동일한 코드로 Windows, Linux, macOS, iOS, Android를 지원합니다.

eSeGeCe의 다른 제품

sgcMQ를 Delphi, C++ Builder, .NET용 다른 컴포넌트 라이브러리와 함께 사용해 보세요.

sgcWebSockets

전체 라이브러리입니다. WebSocket 클라이언트와 서버, HTTP/2, IoT, P2P, AI 컴포넌트를 제공합니다. WebSocket 캐리어가 바로 여기에 있습니다.

자세히 알아보기 →

sgcQUIC

네이티브 OpenSSL 3.5 QUIC 엔진 위에 구축된 QUIC(RFC 9000) 및 HTTP/3(RFC 9114) 클라이언트 및 서버 컴포넌트입니다.

자세히 알아보기 →

sgcAI

AI, LLM, MCP 컴포넌트입니다. 채팅 컴포넌트 하나로 OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok, Mistral에 연결합니다.

자세히 알아보기 →

sgcHTML

Bootstrap 5와 htmx를 사용하는 Delphi, C++ Builder, .NET용 데이터 인식 서버 사이드 HTML/UI 컴포넌트입니다.

자세히 알아보기 →

sgcSign

엔터프라이즈 디지털 서명입니다. 10개 키 공급자와 21개 EU 국가 프로파일을 갖춘 XAdES, PAdES, CAdES, ASiC를 지원합니다.

자세히 알아보기 →

sgcOpenAPI

OpenAPI 3.0 파서 및 SDK 생성기입니다. 모든 OpenAPI 명세를 몇 초 만에 강타입 Delphi 클라이언트로 바꿔 줍니다.

자세히 알아보기 →