sgcMQ: MQTT-, AMQP-, Kafka- & STOMP-clients voor Delphi & C++ Builder
Standalone product Windows, Linux, macOS, iOS & Android

sgcMQ: MQTT-, AMQP-, Kafka- & STOMP-clients voor Delphi & C++ Builder

Zeven clientcomponenten spreken MQTT 3.1.1 en 5.0, AMQP 0.9.1, AMQP 1.0, het Apache Kafka wire protocol en STOMP 1.0 tot en met 1.2, met brokerspecifieke STOMP-clients voor RabbitMQ en ActiveMQ. Elk wire-formaat wordt binnen de bibliotheek in Object Pascal geparseerd en geschreven, dus je hoeft geen externe clientbibliotheek, geen DLL en geen wrapper mee te leveren. sgcMQ is standalone, het levert de sgcWebSockets Core runtime mee waarop het gebouwd is, dus je hoeft geen basislicentie te kopen.

Geen basislicentie vereist
Volledige broncode
Zes targets, één codebase
Eén drager TsgcTCPClient Gewoon TCP of TLS, dezelfde socket voor elk protocol
MQTT TsgcWSPClient_MQTT
AMQP 0.9.1 TsgcWSPClient_AMQP
AMQP 1.0 TsgcWSPClient_AMQP1
Kafka TsgcWSPClient_Kafka
STOMP TsgcWSPClient_STOMP
STOMP voor RabbitMQ TsgcWSPClient_STOMP_RabbitMQ
STOMP voor ActiveMQ TsgcWSPClient_STOMP_ActiveMQ
7 Clientcomponenten Eén pagina op het componentenpalet
5 Protocolfamilies MQTT, AMQP 0.9.1, AMQP 1.0, Kafka, STOMP
6 Doelplatforms Win32, Win64, Linux64, macOS, iOS, Android
0 Externe bibliotheken Geen librdkafka, geen Paho, geen Qpid, geen DLL
1 Transportdrager Eén TsgcTCPClient bedient ze allemaal

Twee dingen die je eerst moet weten

Wat sgcMQ van je nodig heeft en hoe de bytes bij de broker aankomen. Beide antwoorden zijn kort.

★ Geen basislicentie vereist

sgcMQ is zelfstandig

Het leunt niet op een basisproduct. Alles wat de componenten nodig hebben zit in sgcMQ: de sgcWebSockets Core runtime, de TCP-drager TsgcTCPClient, de TLS-laag en de JSON-helpers. Eén SKU, één installer, verder niets te kopen.

Bij elke licentie krijg je de volledige broncode, zodat je door de protocolimplementaties heen kunt stappen in je eigen debugger in plaats van ze in een binary te zien verdwijnen.

Transportbereik

sgcMQ werkt met gewoon TCP en TLS

Elk protocol in het pakket rijdt op een rauwe socket, gewoon geopend of verpakt in TLS. Daarmee dek je de native brokerpoorten, en zo worden MQTT, AMQP, Kafka en STOMP normaal gesproken uitgerold. Je hebt niets meer nodig dan wat in de doos zit.

Wil je een protocol in plaats daarvan over WebSocket draaien, bijvoorbeeld MQTT over WebSocket of Web-STOMP, dan heb je de WebSocket-client nodig, en die wordt geleverd met sgcWebSockets, niet met sgcMQ. Controleer welk transport je broker aanbiedt voordat je kiest.

Zeven clients, vijf protocolfamilies

Elk is een niet-visueel component dat je op een formulier zet of in code aanmaakt. Je koppelt de drager via de eigenschap Client, hangt de protocolgebeurtenissen op en roept dan de eigen werkwoorden van het protocol aan. De naamgeving is over alle zeven consistent, dus als je er één kent, ben je bij de rest al een heel eind.

MQTT1 component

Publiceren, abonneren en de hele QoS-machinerie

TsgcWSPClient_MQTT dekt MQTT 3.1.1 en MQTT 5.0 achter één MQTTVersion-eigenschap. QoS 0, 1 en 2 met de PUBACK-, PUBREC-, PUBREL- en PUBCOMP-uitwisseling zichtbaar als gebeurtenissen in plaats van verborgen, retained messages, Last Will and Testament, abonnementen met wildcards en hervatbare sessies. Versie 5 voegt reason codes, user properties, topic aliases, gedeelde abonnementen en de AUTH-rondgang voor challenge-responseschema's toe.

TsgcWSPClient_MQTT MQTT 3.1.1 · MQTT 5.0
AMQP2 componenten

Twee protocollen die alleen een naam delen

TsgcWSPClient_AMQP spreekt AMQP 0.9.1, het protocol waarvoor RabbitMQ is gebouwd: channels, het declareren van exchanges en queues, bindings, consumers, publisher acknowledgements, prefetch-QoS en transacties. TsgcWSPClient_AMQP1 spreekt AMQP 1.0, de OASIS- en ISO/IEC 19464-standaard achter Azure Service Bus en Event Hubs: containers, sessies, sender- en receiverlinks, credit-based flow control, SASL en de tokenhelpers voor Claims-Based Security. Ander wire-formaat, ander objectmodel, dus sgcMQ levert voor elk een eigen component in plaats van te doen alsof één API op beide past.

Apache Kafka1 component

Het binaire protocol, rechtstreeks gesproken

TsgcWSPClient_Kafka spreekt het Kafka wire protocol over TCP, inclusief het v2-recordbatchformaat. Er zit geen REST-proxy voor en geen librdkafka onder. Produceer losse records of batches met een gekozen acks-niveau en gzip-compressie, consumeer via een group waarbij coordinator discovery, join, sync, heartbeat en rebalance voor je worden afgehandeld, of lees een partitie rechtstreeks op offset. Offset commit, topics aanmaken en verwijderen, groups opsommen en de capability probe van de broker zijn allemaal volwaardige aanroepen.

TsgcWSPClient_Kafka Producer · Consumer groups · Admin
STOMP3 componenten

Eén generieke client, twee brokerdialecten

TsgcWSPClient_STOMP verwerkt STOMP 1.0, 1.1 en 1.2: SEND, SUBSCRIBE, UNSUBSCRIBE, ACK, NACK, receipts, heart-beating in beide richtingen en de transactieframes BEGIN, COMMIT en ABORT, waarbij je de geaccepteerde versies aankondigt via Versions. De twee afgeleiden zetten de bestemmingsconventies van de broker om in benoemde methoden: RabbitMQ krijgt helpers voor /queue, /topic, /exchange, /amq/queue en /temp-queue, ActiveMQ krijgt queue- en topichelpers plus een ActiveMQ_Options-eigenschap voor de eigen headers van de broker.

Gepubliceerde protocollen, dus de broker is jouw keuze

sgcMQ implementeert de specificaties in plaats van een SDK van een leverancier te verpakken, dus alles wat deze protocollen op de lijn spreekt komt in aanmerking. Hetzelfde component werkt tegen een zelfgehoste broker en een beheerde clouddienst zonder codewijziging, en van broker wisselen is een host, een poort en een set inloggegevens.

RabbitMQ TsgcWSPClient_AMQP

AMQP 0.9.1 native. Ook de STOMP- en MQTT-plug-ins zijn bereikbaar, elk met een eigen component.

Apache Kafka TsgcWSPClient_Kafka

Het eigen binaire protocol van de broker op 9092, en elke broker die het Kafka wire protocol spreekt.

Eclipse Mosquitto TsgcWSPClient_MQTT

De lichtgewicht MQTT-referentiebroker, gewoon op 1883 of met TLS op 8883.

HiveMQ TsgcWSPClient_MQTT

Volledig MQTT 5.0, inclusief gedeelde abonnementen en user properties.

EMQX TsgcWSPClient_MQTT

MQTT 3.1.1 en 5.0, zelfgehost of in de cloud van de leverancier.

Apache ActiveMQ TsgcWSPClient_STOMP_ActiveMQ

STOMP op 61613, of AMQP 1.0 tegen Artemis met het AMQP 1.0-component.

Azure Service Bus TsgcWSPClient_AMQP1

AMQP 1.0 met de Claims-Based Security-helpers, en Event Hubs op hetzelfde component.

AWS IoT Core TsgcWSPClient_MQTT

MQTT over TLS met clientcertificaten, ingesteld via de TLSOptions van de drager.

Eén drager onder elk protocol

Wijs een TsgcTCPClient toe aan de eigenschap Client van het protocolcomponent en de frames gaan rechtstreeks de socket op. Encryptie, proxy traversal, IPv6 en opnieuw verbinden zijn instellingen op die drager, dus je stelt ze één keer in en ze gedragen zich identiek, of het protocol erboven nu MQTT, AMQP, Kafka of STOMP is.

MQTT 3.1.1 en 5.0 TsgcWSPClient_MQTT
TCP1883De standaard MQTT-listener.
TLS8883Zet TLS aan op de drager.
AMQP 0.9.1 TsgcWSPClient_AMQP
TCP5672De standaardlistener van RabbitMQ.
TLS5671De amqps-listener.
AMQP 1.0 TsgcWSPClient_AMQP1
TCP5672Hetzelfde poortnummer, een ander protocol.
TLS5671Wat Azure Service Bus verwacht.
Apache Kafka TsgcWSPClient_Kafka
TCP9092De plaintext-listener.
TLS9093Waar de eigen SSL-listener van de broker ook op is ingesteld.
STOMP, RabbitMQ-plug-in TsgcWSPClient_STOMP_RabbitMQ
TCP61613De native STOMP-poort.
TLS61614De versleutelde listener van de plug-in.
STOMP, ActiveMQ TsgcWSPClient_STOMP_ActiveMQ
TCP61613De native STOMP-connector.
TLS61612De stomp+ssl-connector van de broker.

Het generieke TsgcWSPClient_STOMP gebruikt ook 61613, tegen elke broker die STOMP aankan. Dit zijn de gebruikelijke standaardwaarden, en de Port van de drager neemt gewoon over waarop jouw omgeving daadwerkelijk luistert.

TLS zoals jij het wilt

TLSOptions.IOHandler kiest OpenSSL voor cross-platformbuilds, of SChannel op Windows als je liever helemaal geen OpenSSL-binaries meelevert. Mutual TLS leest een clientcertificaat uit een PEM-bestand, een PKCS#12-bundel of het Windows-certificaatarchief.

Opnieuw verbinden en keep-alive

De WatchDog van de drager verbindt na een verbroken verbinding opnieuw, met een instelbaar interval en aantal pogingen, en elk protocol voegt zijn eigen levenscontrole toe: MQTT keep-alive-pings, AMQP-heartbeats, STOMP heart-beating en heartbeats van Kafka consumer groups.

Proxy's en IPv6

Ondersteuning voor HTTP CONNECT-proxy's zit op de drager, dus een broker achter een bedrijfsproxy is bereikbaar, en een IPv6-brokeradres heeft geen extra configuratie nodig.

Gebeurtenissen, geen pollinglus

Het lezen draait op een eigen thread en binnenkomende frames komen aan als getypeerde gebeurtenissen: OnMQTTPublish, OnAMQPBasicDeliver, OnKafkaMessage, OnSTOMPMessage. Zet de notify-instellingen van de drager zo dat ze naar de hoofdthread worden doorgezet voor VCL- en FMX-code.

Abonneren en publiceren via MQTT

Combineer een TsgcTCPClient met het protocolcomponent, geef de inloggegevens op, hang de gebeurtenissen op en roep dan de werkwoorden van het protocol aan. Dezelfde opzet in Object Pascal en C++ Builder, en dezelfde opzet voor de andere zes componenten.

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;

Zes targets, zonder sterretje

Het messagingpakket kent geen platformbeperking. Alle zeven clients en de drager eronder zijn geregistreerd voor elk target dat de compiler oplevert, van een Windows-service tot een Android-toestel, vanuit één broncodeboom.

Alle 7 protocolclients MQTT, AMQP 0.9.1, AMQP 1.0, Kafka en de drie STOMP-clients
Windows Win32 Windows Win64 Linux64 macOS iOS Android
De TsgcTCPClient-drager Socket, TLS, proxy, IPv6 en opnieuw verbinden met WatchDog
Windows Win32 Windows Win64 Linux64 macOS iOS Android
TLS-engine Gekozen met TLSOptions.IOHandler
OpenSSL, elk target SChannel, alleen Windows
IDE-ondersteuning Eén broncodeboom, design-time packages per versie
Delphi 7 tot 13 C++ Builder
WebSocket-drager MQTT over WebSocket, Web-STOMP en vergelijkbaar
Niet in sgcMQ Vereist een sgcWebSockets-package

Bekijk de volledige standaarden- en platformtabel op de functiepagina →

Een standalone package

sgcMQ wordt zelfstandig gelicentieerd, vanaf €249 voor één ontwikkelaar. Alle licenties bevatten volledige broncode, 1 jaar updates en 50% tot 70% verlengingskorting: 50% als je één pakket verlengt, 60% bij twee, 70% bij drie of meer. sgcAI en sgcMQ tellen elk als een pakket.

sgcMQ

€249

Single-, Team- en Site-licenties beschikbaar.

  • MQTT 3.1.1- & 5.0-client
  • AMQP 0.9.1- & AMQP 1.0-clients
  • Apache Kafka-client
  • STOMP-, RabbitMQ- & ActiveMQ-clients
  • sgcWebSockets Core runtime inbegrepen
  • Delphi & C++ Builder, alle zes de targets
  • Volledige broncode
  • 1 jaar updates
★ Geen basislicentie vereist

sgcMQ bevat de sgcWebSockets Core runtime, dus je hoeft verder niets te kopen.

Bij het afrekenen staan twee regels: het recht op de sgcWebSockets Core runtime, dat op nul wordt gefactureerd, en het sgcMQ-pakket zelf. Volledige prijsinformatie.

3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
Niet-goed-geld-terug-garantie van 30 dagenNiet tevreden? Vraag binnen 30 dagen na aankoop een volledige terugbetaling aan. Bekijk het terugbetalingsbeleid

Praat vanuit Delphi met je broker

MQTT, AMQP, Kafka en STOMP in één package, native geïmplementeerd, met de runtime inbegrepen en de volledige broncode in de doos. Windows, Linux, macOS, iOS en Android vanuit dezelfde code.

Andere producten van eSeGeCe

Combineer sgcMQ met onze andere componentbibliotheken voor Delphi, C++ Builder en .NET.

sgcWebSockets

De volledige bibliotheek: WebSocket-clients en -servers, HTTP/2, IoT-, P2P- en AI-componenten. Hier zit de WebSocket-drager.

Meer informatie →

sgcQUIC

QUIC- (RFC 9000) en HTTP/3-client- en servercomponenten (RFC 9114), gebouwd op de native OpenSSL 3.5 QUIC-engine.

Meer informatie →

sgcAI

AI-, LLM- en MCP-componenten. Eén chatcomponent bereikt OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok en Mistral.

Meer informatie →

sgcHTML

Data-aware server-side HTML/UI-componenten voor Delphi, C++ Builder en .NET, met Bootstrap 5 en htmx.

Meer informatie →

sgcSign

Digitale handtekeningen voor enterprisegebruik. XAdES, PAdES, CAdES en ASiC met 10 sleutelproviders en 21 EU-landprofielen.

Meer informatie →

sgcOpenAPI

OpenAPI 3.0-parser en SDK-generator. Zet elke OpenAPI-spec in seconden om in een sterk getypeerde Delphi-client.

Meer informatie →