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.
0Externe bibliothekenGeen librdkafka, geen Paho, geen Qpid, geen DLL
1TransportdragerEén TsgcTCPClient bedient ze allemaal
Voordat je koopt
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.
Wat er in de doos zit
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_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.
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_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.
R
RabbitMQTsgcWSPClient_AMQP
AMQP 0.9.1 native. Ook de STOMP- en MQTT-plug-ins zijn bereikbaar, elk met een eigen component.
K
Apache KafkaTsgcWSPClient_Kafka
Het eigen binaire protocol van de broker op 9092, en elke broker die het Kafka wire protocol spreekt.
M
Eclipse MosquittoTsgcWSPClient_MQTT
De lichtgewicht MQTT-referentiebroker, gewoon op 1883 of met TLS op 8883.
H
HiveMQTsgcWSPClient_MQTT
Volledig MQTT 5.0, inclusief gedeelde abonnementen en user properties.
E
EMQXTsgcWSPClient_MQTT
MQTT 3.1.1 en 5.0, zelfgehost of in de cloud van de leverancier.
A
Apache ActiveMQTsgcWSPClient_STOMP_ActiveMQ
STOMP op 61613, of AMQP 1.0 tegen Artemis met het AMQP 1.0-component.
AZ
Azure Service BusTsgcWSPClient_AMQP1
AMQP 1.0 met de Claims-Based Security-helpers, en Event Hubs op hetzelfde component.
AW
AWS IoT CoreTsgcWSPClient_MQTT
MQTT over TLS met clientcertificaten, ingesteld via de TLSOptions van de drager.
Transport
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.0TsgcWSPClient_MQTT
TCP1883De standaard MQTT-listener.
TLS8883Zet TLS aan op de drager.
AMQP 0.9.1TsgcWSPClient_AMQP
TCP5672De standaardlistener van RabbitMQ.
TLS5671De amqps-listener.
AMQP 1.0TsgcWSPClient_AMQP1
TCP5672Hetzelfde poortnummer, een ander protocol.
TLS5671Wat Azure Service Bus verwacht.
Apache KafkaTsgcWSPClient_Kafka
TCP9092De plaintext-listener.
TLS9093Waar de eigen SSL-listener van de broker ook op is ingesteld.
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.
Snelstart
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.
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 protocolclientsMQTT, AMQP 0.9.1, AMQP 1.0, Kafka en de drie STOMP-clients
Windows Win32Windows Win64Linux64macOSiOSAndroid
De TsgcTCPClient-dragerSocket, TLS, proxy, IPv6 en opnieuw verbinden met WatchDog
Windows Win32Windows Win64Linux64macOSiOSAndroid
TLS-engineGekozen met TLSOptions.IOHandler
OpenSSL, elk targetSChannel, alleen Windows
IDE-ondersteuningEén broncodeboom, design-time packages per versie
Delphi 7 tot 13C++ Builder
WebSocket-dragerMQTT over WebSocket, Web-STOMP en vergelijkbaar
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.