sgcMQ: MQTT-, AMQP-, Kafka- und STOMP-Clients für Delphi und C++ Builder
Eigenständiges Produkt Windows, Linux, macOS, iOS und Android

sgcMQ: MQTT-, AMQP-, Kafka- und STOMP-Clients für Delphi und C++ Builder

Sieben Client-Komponenten sprechen MQTT 3.1.1 und 5.0, AMQP 0.9.1, AMQP 1.0, das Apache-Kafka-Wire-Protokoll und STOMP 1.0 bis 1.2, dazu broker-spezifische STOMP-Clients für RabbitMQ und ActiveMQ. Jedes Wire-Format wird in Object Pascal innerhalb der Bibliothek geparst und geschrieben, es gibt also keine externe Client-Bibliothek, keine DLL und keinen Wrapper zum Ausliefern. sgcMQ ist eigenständig, es bringt die sgcWebSockets Core Runtime mit, auf der es aufbaut, du musst also keine Basislizenz kaufen.

Keine Basislizenz erforderlich
Voller Quellcode
Sechs Zielplattformen, eine Codebasis
Ein Träger TsgcTCPClient Reines TCP oder TLS, derselbe Socket für jedes Protokoll
MQTT TsgcWSPClient_MQTT
AMQP 0.9.1 TsgcWSPClient_AMQP
AMQP 1.0 TsgcWSPClient_AMQP1
Kafka TsgcWSPClient_Kafka
STOMP TsgcWSPClient_STOMP
STOMP für RabbitMQ TsgcWSPClient_STOMP_RabbitMQ
STOMP für ActiveMQ TsgcWSPClient_STOMP_ActiveMQ
7 Client-Komponenten Eine Seite auf der Komponentenpalette
5 Protokollfamilien MQTT, AMQP 0.9.1, AMQP 1.0, Kafka, STOMP
6 Zielplattformen Win32, Win64, Linux64, macOS, iOS, Android
0 Externe Bibliotheken Kein librdkafka, kein Paho, kein Qpid, keine DLL
1 Transportträger Ein TsgcTCPClient bedient sie alle

Zwei Dinge, die du vorher wissen solltest

Was sgcMQ von dir braucht, und wie die Bytes zum Broker gelangen. Beide Antworten sind kurz.

★ Keine Basislizenz erforderlich

sgcMQ ist in sich geschlossen

Es setzt nicht auf einem Basisprodukt auf. Alles, was die Komponenten brauchen, steckt in sgcMQ: die sgcWebSockets Core Runtime, der TCP-Träger TsgcTCPClient, die TLS-Schicht und die JSON-Helfer. Eine SKU, ein Installer, sonst nichts zu kaufen.

Der volle Quellcode liegt jeder Lizenz bei, du kannst die Protokollimplementierungen also in deinem eigenen Debugger durchsteppen, statt sie in einer Binärdatei verschwinden zu sehen.

Transportumfang

sgcMQ ist reines TCP und TLS

Jedes Protokoll im Paket läuft über einen rohen Socket, offen oder in TLS verpackt. Das deckt die nativen Broker-Ports ab, also genau die Art, wie MQTT, AMQP, Kafka und STOMP normalerweise betrieben werden, und es braucht nichts über das hinaus, was mitgeliefert wird.

Ein Protokoll stattdessen über WebSocket zu betreiben, zum Beispiel MQTT über WebSocket oder Web-STOMP, erfordert den WebSocket-Client, und der gehört zu sgcWebSockets, nicht zu sgcMQ. Prüfe vor deiner Entscheidung, welchen Transport dein Broker bereitstellt.

Sieben Clients, fünf Protokollfamilien

Jeder davon ist eine nicht-visuelle Komponente, die du auf ein Formular ziehst oder im Code erzeugst. Du hängst den Träger über die Eigenschaft Client an, verdrahtest die Protokollereignisse und rufst dann die Verben des Protokolls auf. Die Benennung ist über alle sieben hinweg einheitlich, wer eine kennt, findet sich in den übrigen sofort zurecht.

MQTT1 Komponente

Publish, Subscribe und die komplette QoS-Maschinerie

TsgcWSPClient_MQTT deckt MQTT 3.1.1 und MQTT 5.0 hinter einer einzigen Eigenschaft MQTTVersion ab. QoS 0, 1 und 2, wobei der Austausch aus PUBACK, PUBREC, PUBREL und PUBCOMP als Ereignisse sichtbar wird statt versteckt zu bleiben, dazu Retained Messages, Last Will and Testament, Wildcard-Abonnements und wiederaufnehmbare Sessions. Version 5 ergänzt Reason Codes, User Properties, Topic-Aliase, Shared Subscriptions und den AUTH-Umlauf für Challenge-Response-Verfahren.

TsgcWSPClient_MQTT MQTT 3.1.1 · MQTT 5.0
AMQP2 Komponenten

Zwei Protokolle, die sich nur den Namen teilen

TsgcWSPClient_AMQP spricht AMQP 0.9.1, das Protokoll, für das RabbitMQ gebaut wurde: Channels, Deklaration von Exchanges und Queues, Bindings, Consumer, Publisher-Bestätigungen, Prefetch-QoS und Transaktionen. TsgcWSPClient_AMQP1 spricht AMQP 1.0, den OASIS- und ISO/IEC-19464-Standard hinter Azure Service Bus und Event Hubs: Container, Sessions, Sender- und Receiver-Links, kreditbasierte Flusskontrolle, SASL und die Token-Helfer für Claims-Based Security. Anderes Wire-Format, anderes Objektmodell, deshalb liefert sgcMQ für jedes eine eigene Komponente, statt so zu tun, als passe eine API auf beides.

Apache Kafka1 Komponente

Das Binärprotokoll, direkt gesprochen

TsgcWSPClient_Kafka spricht das Kafka-Wire-Protokoll über TCP, einschließlich des Record-Batch-Formats v2. Davor sitzt kein REST-Proxy und darunter kein librdkafka. Produziere einzelne Records oder Batches mit gewähltem Acks-Level und gzip-Komprimierung, konsumiere über eine Gruppe, bei der Coordinator-Discovery, Join, Sync, Heartbeat und Rebalance für dich erledigt werden, oder lies eine Partition direkt per Offset. Offset-Commit, Anlegen und Löschen von Topics, Auflisten von Gruppen und die Abfrage der Broker-Fähigkeiten sind alles vollwertige Aufrufe.

TsgcWSPClient_Kafka Producer · Consumer-Gruppen · Admin
STOMP3 Komponenten

Ein generischer Client, zwei Broker-Dialekte

TsgcWSPClient_STOMP beherrscht STOMP 1.0, 1.1 und 1.2: SEND, SUBSCRIBE, UNSUBSCRIBE, ACK, NACK, Receipts, bidirektionales Heart-Beating sowie die Transaktions-Frames BEGIN, COMMIT und ABORT, wobei die akzeptierten Versionen über Versions angekündigt werden. Die beiden Nachfahren übersetzen die Destination-Konventionen der Broker in benannte Methoden: RabbitMQ bekommt Helfer für /queue, /topic, /exchange, /amq/queue und /temp-queue, ActiveMQ bekommt Queue- und Topic-Helfer plus eine Eigenschaft ActiveMQ_Options für die brokereigenen Header.

Offene Protokolle, der Broker ist deine Wahl

sgcMQ implementiert die Spezifikationen, statt ein Hersteller-SDK zu umhüllen, deshalb kommt alles infrage, was diese Protokolle auf der Leitung spricht. Dieselbe Komponente arbeitet ohne Codeänderung gegen einen selbst gehosteten Broker und gegen einen verwalteten Cloud-Dienst, und ein Brokerwechsel besteht aus einem Host, einem Port und einem Satz Zugangsdaten.

RabbitMQ TsgcWSPClient_AMQP

AMQP 0.9.1 nativ. Die STOMP- und MQTT-Plugins sind ebenfalls erreichbar, jeweils mit einer eigenen Komponente.

Apache Kafka TsgcWSPClient_Kafka

Das brokereigene Binärprotokoll auf 9092, und jeder Kafka-wire-kompatible Broker.

Eclipse Mosquitto TsgcWSPClient_MQTT

Der schlanke MQTT-Referenzbroker, offen auf 1883 oder mit TLS auf 8883.

HiveMQ TsgcWSPClient_MQTT

Vollständiges MQTT 5.0, inklusive Shared Subscriptions und User Properties.

EMQX TsgcWSPClient_MQTT

MQTT 3.1.1 und 5.0, selbst gehostet oder in der Cloud des Anbieters.

Apache ActiveMQ TsgcWSPClient_STOMP_ActiveMQ

STOMP auf 61613, oder AMQP 1.0 gegen Artemis mit der AMQP-1.0-Komponente.

Azure Service Bus TsgcWSPClient_AMQP1

AMQP 1.0 mit den Helfern für Claims-Based Security, und Event Hubs über dieselbe Komponente.

AWS IoT Core TsgcWSPClient_MQTT

MQTT über TLS mit Client-Zertifikaten, konfiguriert über TLSOptions des Trägers.

Ein Träger unter jedem Protokoll

Weise der Eigenschaft Client der Protokollkomponente einen TsgcTCPClient zu, und die Frames gehen direkt auf den Socket. Verschlüsselung, Proxy-Durchquerung, IPv6 und Reconnect sind Einstellungen an diesem Träger, du konfigurierst sie also einmal, und sie verhalten sich identisch, egal ob darüber MQTT, AMQP, Kafka oder STOMP liegt.

MQTT 3.1.1 und 5.0 TsgcWSPClient_MQTT
TCP1883Der Standard-Listener für MQTT.
TLS8883Schalte TLS am Träger ein.
AMQP 0.9.1 TsgcWSPClient_AMQP
TCP5672Der Standard-Listener von RabbitMQ.
TLS5671Der amqps-Listener.
AMQP 1.0 TsgcWSPClient_AMQP1
TCP5672Dieselbe Portnummer, anderes Protokoll.
TLS5671Das, was Azure Service Bus erwartet.
Apache Kafka TsgcWSPClient_Kafka
TCP9092Der Klartext-Listener.
TLS9093Was auch immer als SSL-Listener des Brokers konfiguriert ist.
STOMP, RabbitMQ-Plugin TsgcWSPClient_STOMP_RabbitMQ
TCP61613Der native STOMP-Port.
TLS61614Der verschlüsselte Listener des Plugins.
STOMP, ActiveMQ TsgcWSPClient_STOMP_ActiveMQ
TCP61613Der native STOMP-Connector.
TLS61612Der stomp+ssl-Connector des Brokers.

Der generische TsgcWSPClient_STOMP nutzt ebenfalls 61613, gegen jeden STOMP-fähigen Broker. Das sind die üblichen Standardwerte, und Port am Träger nimmt genau den Wert an, auf dem dein Deployment tatsächlich lauscht.

TLS, so wie du es willst

TLSOptions.IOHandler wählt OpenSSL für plattformübergreifende Builds, oder SChannel unter Windows, wenn du gar keine OpenSSL-Binaries ausliefern möchtest. Für gegenseitiges TLS wird ein Client-Zertifikat aus einer PEM-Datei, einem PKCS#12-Bundle oder dem Windows-Zertifikatspeicher gelesen.

Reconnect und Keep-Alive

Der WatchDog des Trägers verbindet sich nach einem Abbruch mit konfigurierbarem Intervall und konfigurierbarer Versuchszahl neu, und jedes Protokoll bringt seine eigene Lebendprüfung mit: MQTT-Keep-Alive-Pings, AMQP-Heartbeats, STOMP-Heart-Beating und Heartbeats der Kafka-Consumer-Gruppe.

Proxys und IPv6

Die Unterstützung für HTTP-CONNECT-Proxys sitzt am Träger, ein Broker hinter einem Unternehmens-Proxy ist damit erreichbar, und eine IPv6-Broker-Adresse braucht keine zusätzliche Konfiguration.

Ereignisse statt Polling-Schleife

Das Lesen läuft in einem eigenen Thread, und eingehende Frames kommen als typisierte Ereignisse an: OnMQTTPublish, OnAMQPBasicDeliver, OnKafkaMessage, OnSTOMPMessage. Stelle die Notify-Einstellungen des Trägers so ein, dass sie für VCL- und FMX-Code auf den Hauptthread umgeleitet werden.

Über MQTT abonnieren und veröffentlichen

Kombiniere einen TsgcTCPClient mit der Protokollkomponente, setze die Zugangsdaten, verdrahte die Ereignisse und rufe dann die Protokollverben auf. Dieselbe Struktur in Object Pascal und C++ Builder, und dieselbe Struktur für die anderen sechs Komponenten.

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;

Sechs Zielplattformen, ohne Sternchen

Das Messaging-Paket kennt keine Plattformbeschränkung. Alle sieben Clients und der Träger darunter sind für jede Zielplattform registriert, die der Compiler erzeugt, vom Windows-Dienst bis zum Android-Handy, aus einem einzigen Quellbaum.

Alle 7 Protokoll-Clients MQTT, AMQP 0.9.1, AMQP 1.0, Kafka und die drei STOMP-Clients
Windows Win32 Windows Win64 Linux64 macOS iOS Android
Der Träger TsgcTCPClient Socket, TLS, Proxy, IPv6 und WatchDog-Reconnect
Windows Win32 Windows Win64 Linux64 macOS iOS Android
TLS-Engine Ausgewählt über TLSOptions.IOHandler
OpenSSL, alle Zielplattformen SChannel, nur Windows
IDE-Unterstützung Ein Quellbaum, Designtime-Pakete je Version
Delphi 7 bis 13 C++ Builder
WebSocket-Träger MQTT über WebSocket, Web-STOMP und Ähnliches
Nicht in sgcMQ enthalten Erfordert ein sgcWebSockets-Paket

Die vollständige Standards- und Plattformtabelle auf der Funktionsseite ansehen →

Ein eigenständiges Paket

sgcMQ wird eigenständig lizenziert, ab €249 für einen einzelnen Entwickler. Alle Lizenzen enthalten den vollen Quellcode, 1 Jahr Updates und 50% bis 70% Verlängerungsrabatt: 50%, wenn du ein Paket verlängerst, 60% bei zwei, 70% bei drei oder mehr. sgcAI und sgcMQ zählen jeweils als ein Paket.

sgcMQ

€249

Single-, Team- und Site-Lizenzen verfügbar.

  • Client für MQTT 3.1.1 und 5.0
  • Clients für AMQP 0.9.1 und AMQP 1.0
  • Apache-Kafka-Client
  • Clients für STOMP, RabbitMQ und ActiveMQ
  • sgcWebSockets Core Runtime enthalten
  • Delphi und C++ Builder, alle sechs Zielplattformen
  • Voller Quellcode
  • 1 Jahr Updates
★ Keine Basislizenz erforderlich

sgcMQ enthält die sgcWebSockets Core Runtime, du musst also nichts weiter kaufen.

An der Kasse erscheinen zwei Positionen: die Berechtigung für die sgcWebSockets Core Runtime, die mit null berechnet wird, und das sgcMQ-Paket selbst. Alle Preisdetails.

3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30 Tage Geld-zurück-GarantieNicht zufrieden? Fordern Sie innerhalb von 30 Tagen nach dem Kauf eine vollständige Rückerstattung an. Rückerstattungsrichtlinie ansehen

Sprich aus Delphi heraus mit deinem Broker

MQTT, AMQP, Kafka und STOMP in einem Paket, nativ implementiert, mit enthaltener Runtime und vollem Quellcode im Lieferumfang. Windows, Linux, macOS, iOS und Android aus demselben Code.

Weitere Produkte von eSeGeCe

Kombiniere sgcMQ mit unseren anderen Komponentenbibliotheken für Delphi, C++ Builder und .NET.

sgcWebSockets

Die vollständige Bibliothek: WebSocket-Clients und -Server, HTTP/2, IoT, P2P und KI-Komponenten. Hier lebt der WebSocket-Träger.

Mehr erfahren →

sgcQUIC

Client- und Server-Komponenten für QUIC (RFC 9000) und HTTP/3 (RFC 9114), aufgebaut auf der nativen QUIC-Engine von OpenSSL 3.5.

Mehr erfahren →

sgcAI

Komponenten für KI, LLM und MCP. Eine Chat-Komponente erreicht OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok und Mistral.

Mehr erfahren →

sgcHTML

Datensensitive serverseitige HTML- und UI-Komponenten für Delphi, C++ Builder und .NET, mit Bootstrap 5 und htmx.

Mehr erfahren →

sgcSign

Digitale Signaturen auf Unternehmensniveau. XAdES, PAdES, CAdES und ASiC mit 10 Schlüsselanbietern und 21 EU-Länderprofilen.

Mehr erfahren →

sgcOpenAPI

OpenAPI-3.0-Parser und SDK-Generator. Verwandle jede OpenAPI-Spezifikation in Sekunden in einen streng typisierten Delphi-Client.

Mehr erfahren →