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 런타임을 함께 포함하므로 별도로 구매해야 할 기본 라이선스가 없습니다.
캐리어 하나로TsgcTCPClient일반 TCP 또는 TLS, 모든 프로토콜에 동일한 소켓
MQTTTsgcWSPClient_MQTT
AMQP 0.9.1TsgcWSPClient_AMQP
AMQP 1.0TsgcWSPClient_AMQP1
KafkaTsgcWSPClient_Kafka
STOMPTsgcWSPClient_STOMP
RabbitMQ용 STOMPTsgcWSPClient_STOMP_RabbitMQ
ActiveMQ용 STOMPTsgcWSPClient_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_MQTT는 MQTTVersion 속성 하나로 MQTT 3.1.1과 MQTT 5.0을 모두 다룹니다. QoS 0, 1, 2를 지원하며 PUBACK, PUBREC, PUBREL, PUBCOMP 교환을 감추지 않고 이벤트로 노출합니다. 보존 메시지, Last Will and Testament, 와일드카드 구독, 재개 가능한 세션도 지원합니다. 버전 5에서는 이유 코드, 사용자 속성, 토픽 별칭, 공유 구독, 그리고 챌린지/응답 방식을 위한 AUTH 왕복이 추가됩니다.
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로 둘을 억지로 묶지 않고 각각에 컴포넌트를 제공합니다.
TsgcWSPClient_Kafka는 v2 레코드 배치 형식을 포함해 TCP 위의 Kafka 와이어 프로토콜로 통신합니다. 앞단의 REST 프록시도 아래의 librdkafka도 필요하지 않습니다. 원하는 acks 수준과 gzip 압축으로 단일 레코드나 배치를 생산하고, 코디네이터 검색과 조인, 동기화, 하트비트, 리밸런스가 자동으로 처리되는 그룹으로 소비하거나, 오프셋을 지정해 파티션을 직접 읽을 수 있습니다. 오프셋 커밋, 토픽 생성과 삭제, 그룹 조회, 브로커 기능 확인 모두 일급 호출로 제공됩니다.
sgcMQ는 특정 벤더 SDK를 감싸는 대신 사양 자체를 구현하므로, 이 프로토콜들을 와이어에서 처리하는 모든 브로커가 후보가 됩니다. 자체 호스팅 브로커든 관리형 클라우드 서비스든 코드 변경 없이 동일한 컴포넌트가 동작하며, 브로커를 바꾸는 일은 호스트와 포트, 자격 증명을 바꾸는 것으로 끝납니다.
R
RabbitMQTsgcWSPClient_AMQP
AMQP 0.9.1을 네이티브로 지원합니다. STOMP 및 MQTT 플러그인도 각각의 컴포넌트로 사용할 수 있습니다.
K
Apache KafkaTsgcWSPClient_Kafka
9092에서 동작하는 브로커 고유의 바이너리 프로토콜, 그리고 Kafka 와이어 호환 브로커 전반.
M
Eclipse MosquittoTsgcWSPClient_MQTT
대표적인 경량 MQTT 브로커로, 1883의 일반 연결 또는 8883의 TLS 연결을 사용합니다.
H
HiveMQTsgcWSPClient_MQTT
공유 구독과 사용자 속성을 포함한 완전한 MQTT 5.0.
E
EMQXTsgcWSPClient_MQTT
자체 호스팅이든 벤더 클라우드든 MQTT 3.1.1과 5.0을 지원합니다.
A
Apache ActiveMQTsgcWSPClient_STOMP_ActiveMQ
61613의 STOMP, 또는 AMQP 1.0 컴포넌트로 Artemis에 연결하는 AMQP 1.0.
AZ
Azure Service BusTsgcWSPClient_AMQP1
Claims-Based Security 헬퍼를 갖춘 AMQP 1.0이며, Event Hubs도 동일한 컴포넌트로 사용합니다.
AW
AWS IoT CoreTsgcWSPClient_MQTT
캐리어의 TLSOptions로 설정하는 클라이언트 인증서 기반 TLS 위의 MQTT.
전송
모든 프로토콜 아래 하나의 캐리어
프로토콜 컴포넌트의 Client 속성에 TsgcTCPClient를 할당하면 프레임이 소켓으로 바로 나갑니다. 암호화, 프록시 통과, IPv6, 재연결은 모두 그 캐리어의 설정이므로 한 번만 구성하면 되고, 위에 올라가는 프로토콜이 MQTT든 AMQP든 Kafka든 STOMP든 동일하게 동작합니다.
MQTT 3.1.1과 5.0TsgcWSPClient_MQTT
TCP1883기본 MQTT 리스너입니다.
TLS8883캐리어에서 TLS를 켜세요.
AMQP 0.9.1TsgcWSPClient_AMQP
TCP5672RabbitMQ의 기본 리스너입니다.
TLS5671amqps 리스너입니다.
AMQP 1.0TsgcWSPClient_AMQP1
TCP5672포트 번호는 같지만 프로토콜은 다릅니다.
TLS5671Azure Service Bus가 기대하는 포트입니다.
Apache KafkaTsgcWSPClient_Kafka
TCP9092평문 리스너입니다.
TLS9093브로커의 SSL 리스너가 설정된 포트입니다.
STOMP, RabbitMQ 플러그인TsgcWSPClient_STOMP_RabbitMQ
TCP61613네이티브 STOMP 포트입니다.
TLS61614플러그인의 암호화 리스너입니다.
STOMP, ActiveMQTsgcWSPClient_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개 컴포넌트도 같은 형태입니다.
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 런타임이 포함되어 있으므로 추가로 구매할 것이 없습니다.