sgcMQ: klienci MQTT, AMQP, Kafka i STOMP dla Delphi i C++ Builder
Produkt samodzielny Windows, Linux, macOS, iOS i Android

sgcMQ: klienci MQTT, AMQP, Kafka i STOMP dla Delphi i C++ Builder

Siedem komponentów klienckich mówi w MQTT 3.1.1 i 5.0, AMQP 0.9.1, AMQP 1.0, protokole sieciowym Apache Kafka oraz STOMP od 1.0 do 1.2, a dla RabbitMQ i ActiveMQ dostępni są klienci STOMP dostosowani do konkretnego brokera. Każdy format sieciowy jest parsowany i zapisywany w Object Pascal wewnątrz biblioteki, więc nie trzeba dostarczać zewnętrznej biblioteki klienckiej, biblioteki DLL ani nakładki. sgcMQ jest samodzielny, zawiera środowisko uruchomieniowe sgcWebSockets Core, na którym jest zbudowany, więc nie ma licencji bazowej do kupienia.

Nie wymaga licencji bazowej
Pełny kod źródłowy
Sześć platform, jedna baza kodu
Jeden nośnik TsgcTCPClient Zwykły TCP lub TLS, to samo gniazdo dla każdego protokołu
MQTT TsgcWSPClient_MQTT
AMQP 0.9.1 TsgcWSPClient_AMQP
AMQP 1.0 TsgcWSPClient_AMQP1
Kafka TsgcWSPClient_Kafka
STOMP TsgcWSPClient_STOMP
STOMP for RabbitMQ TsgcWSPClient_STOMP_RabbitMQ
STOMP for ActiveMQ TsgcWSPClient_STOMP_ActiveMQ
7 Komponentów klienckich Jedna strona na palecie komponentów
5 Rodzin protokołów MQTT, AMQP 0.9.1, AMQP 1.0, Kafka, STOMP
6 Platform docelowych Win32, Win64, Linux64, macOS, iOS, Android
0 Bibliotek zewnętrznych Bez librdkafka, bez Paho, bez Qpid, bez DLL
1 Nośnik transportowy Jeden TsgcTCPClient obsługuje je wszystkie

Dwie rzeczy, które warto wiedzieć najpierw

Czego sgcMQ od ciebie wymaga i jak bajty docierają do brokera. Obie odpowiedzi są krótkie.

★ Nie wymaga licencji bazowej

sgcMQ jest samowystarczalny

Nie opiera się na produkcie bazowym. Wszystko, czego potrzebują komponenty, jest zawarte w sgcMQ: środowisko uruchomieniowe sgcWebSockets Core, nośnik TCP TsgcTCPClient, warstwa TLS i funkcje pomocnicze JSON. Jedno SKU, jeden instalator, nic więcej do kupienia.

Pełny kod źródłowy jest dostarczany z każdą licencją, więc implementacje protokołów prześledzisz krok po kroku we własnym debugerze, zamiast oglądać je znikające w pliku binarnym.

Zakres transportu

sgcMQ to zwykły TCP i TLS

Każdy protokół w pakiecie działa na surowym gnieździe, otwartym zwyczajnie albo owiniętym w TLS. Obejmuje to natywne porty brokerów, czyli sposób, w jaki MQTT, AMQP, Kafka i STOMP są zwykle wdrażane, i nie wymaga niczego poza tym, co jest w zestawie.

Uruchomienie protokołu przez WebSocket, na przykład MQTT przez WebSocket albo Web-STOMP, wymaga klienta WebSocket, a ten jest dostarczany z sgcWebSockets, a nie z sgcMQ. Sprawdź, jaki transport udostępnia twój broker, zanim dokonasz wyboru.

Siedmiu klientów, pięć rodzin protokołów

Każdy z nich to komponent niewizualny, który umieszczasz na formularzu albo tworzysz w kodzie. Podłączasz nośnik przez właściwość Client, podpinasz zdarzenia protokołu, a potem wywołujesz jego własne polecenia. Nazewnictwo jest spójne we wszystkich siedmiu, więc opanowanie jednego prowadzi cię niemal przez całą resztę.

MQTT1 komponent

Publikowanie, subskrypcja i cały mechanizm QoS

TsgcWSPClient_MQTT obejmuje MQTT 3.1.1 i MQTT 5.0 za jedną właściwością MQTTVersion. QoS 0, 1 i 2 z wymianą PUBACK, PUBREC, PUBREL i PUBCOMP wystawioną jako zdarzenia, a nie ukrytą, wiadomości zachowane, Last Will and Testament, subskrypcje z symbolami wieloznacznymi i sesje z możliwością wznowienia. Wersja 5 dodaje kody przyczyn, właściwości użytkownika, aliasy tematów, subskrypcje współdzielone oraz wymianę AUTH dla schematów typu wyzwanie i odpowiedź.

TsgcWSPClient_MQTT MQTT 3.1.1 · MQTT 5.0
AMQP2 komponenty

Dwa protokoły, które łączy tylko nazwa

TsgcWSPClient_AMQP mówi w AMQP 0.9.1, protokole, dla którego zbudowano RabbitMQ: kanały, deklarowanie wymian i kolejek, powiązania, konsumenci, potwierdzenia publikującego, QoS prefetch i transakcje. TsgcWSPClient_AMQP1 mówi w AMQP 1.0, standardzie OASIS i ISO/IEC 19464 stojącym za Azure Service Bus i Event Hubs: kontenery, sesje, łącza nadawcze i odbiorcze, kontrola przepływu oparta na kredytach, SASL oraz funkcje pomocnicze tokenów Claims-Based Security. Inny format sieciowy, inny model obiektowy, dlatego sgcMQ dostarcza osobny komponent dla każdego, zamiast udawać, że jedno API pasuje do obu.

Apache Kafka1 komponent

Protokół binarny, wprost

TsgcWSPClient_Kafka mówi protokołem sieciowym Kafka przez TCP, wraz z formatem wsadu rekordów v2. Nie ma przed nim proxy REST ani librdkafka pod spodem. Publikuj pojedyncze rekordy albo wsady z wybranym poziomem potwierdzeń i kompresją gzip, konsumuj przez grupę, w której wykrywanie koordynatora, dołączanie, synchronizacja, heartbeat i równoważenie są obsługiwane za ciebie, albo czytaj partycję bezpośrednio po offsecie. Zatwierdzanie offsetów, tworzenie i usuwanie tematów, listowanie grup oraz badanie możliwości brokera to wszystko pełnoprawne wywołania.

TsgcWSPClient_Kafka Producent · Grupy konsumentów · Administracja
STOMP3 komponenty

Jeden klient ogólny, dwa dialekty brokerów

TsgcWSPClient_STOMP obsługuje STOMP 1.0, 1.1 i 1.2: SEND, SUBSCRIBE, UNSUBSCRIBE, ACK, NACK, potwierdzenia odbioru, dwukierunkowy heart-beating oraz ramki transakcji BEGIN, COMMIT i ABORT, przy czym akceptowane wersje zgłaszasz przez Versions. Dwaj potomkowie zamieniają konwencje adresowania brokerów w nazwane metody: RabbitMQ dostaje funkcje pomocnicze /queue, /topic, /exchange, /amq/queue i /temp-queue, a ActiveMQ funkcje pomocnicze dla kolejek i tematów oraz właściwość ActiveMQ_Options dla własnych nagłówków brokera.

Opublikowane protokoły, więc broker to twój wybór

sgcMQ implementuje specyfikacje, zamiast opakowywać SDK dostawcy, więc kandydatem jest wszystko, co mówi tymi protokołami w sieci. Ten sam komponent działa z brokerem hostowanym u ciebie i z zarządzaną usługą w chmurze bez zmiany kodu, a wymiana brokera to host, port i zestaw poświadczeń.

RabbitMQ TsgcWSPClient_AMQP

Natywnie AMQP 0.9.1. Wtyczki STOMP i MQTT też są osiągalne, każda przez własny komponent.

Apache Kafka TsgcWSPClient_Kafka

Własny protokół binarny brokera na porcie 9092 oraz każdy broker zgodny z protokołem sieciowym Kafka.

Eclipse Mosquitto TsgcWSPClient_MQTT

Referencyjny lekki broker MQTT, zwyczajnie na porcie 1883 albo z TLS na 8883.

HiveMQ TsgcWSPClient_MQTT

Pełne MQTT 5.0, wraz z subskrypcjami współdzielonymi i właściwościami użytkownika.

EMQX TsgcWSPClient_MQTT

MQTT 3.1.1 i 5.0, hostowane u ciebie albo w chmurze dostawcy.

Apache ActiveMQ TsgcWSPClient_STOMP_ActiveMQ

STOMP na porcie 61613 albo AMQP 1.0 wobec Artemis przez komponent AMQP 1.0.

Azure Service Bus TsgcWSPClient_AMQP1

AMQP 1.0 z funkcjami pomocniczymi Claims-Based Security, a Event Hubs przez ten sam komponent.

AWS IoT Core TsgcWSPClient_MQTT

MQTT przez TLS z certyfikatami klienta, konfigurowane przez TLSOptions nośnika.

Jeden nośnik pod każdym protokołem

Przypisz TsgcTCPClient do właściwości Client komponentu protokołu, a ramki trafią prosto na gniazdo. Szyfrowanie, przechodzenie przez proxy, IPv6 i ponowne łączenie to ustawienia tego nośnika, więc konfigurujesz je raz i zachowują się identycznie niezależnie od tego, czy protokołem nad nimi jest MQTT, AMQP, Kafka czy STOMP.

MQTT 3.1.1 i 5.0 TsgcWSPClient_MQTT
TCP1883Domyślny nasłuch MQTT.
TLS8883Włącz TLS na nośniku.
AMQP 0.9.1 TsgcWSPClient_AMQP
TCP5672Domyślny nasłuch RabbitMQ.
TLS5671Nasłuch amqps.
AMQP 1.0 TsgcWSPClient_AMQP1
TCP5672Ten sam numer portu, inny protokół.
TLS5671To, czego oczekuje Azure Service Bus.
Apache Kafka TsgcWSPClient_Kafka
TCP9092Nasłuch nieszyfrowany.
TLS9093Tak, jak skonfigurowano własny nasłuch SSL brokera.
STOMP, wtyczka RabbitMQ TsgcWSPClient_STOMP_RabbitMQ
TCP61613Natywny port STOMP.
TLS61614Szyfrowany nasłuch wtyczki.
STOMP, ActiveMQ TsgcWSPClient_STOMP_ActiveMQ
TCP61613Natywny konektor STOMP.
TLS61612Konektor stomp+ssl brokera.

Ogólny TsgcWSPClient_STOMP również używa portu 61613, wobec dowolnego brokera obsługującego STOMP. To są przyjęte wartości domyślne, a Port nośnika przyjmuje to, na czym faktycznie nasłuchuje twoje wdrożenie.

TLS tak, jak wolisz

TLSOptions.IOHandler wybiera OpenSSL dla kompilacji wieloplatformowych albo SChannel na Windows, gdy wolisz w ogóle nie dostarczać plików binarnych OpenSSL. Wzajemne TLS odczytuje certyfikat klienta z pliku PEM, pakietu PKCS#12 albo magazynu certyfikatów Windows.

Ponowne łączenie i keep-alive

WatchDog nośnika łączy się ponownie po zerwaniu połączenia, z konfigurowalnym interwałem i liczbą prób, a każdy protokół dokłada własny mechanizm podtrzymania: pingi keep-alive MQTT, heartbeaty AMQP, heart-beating STOMP i heartbeaty grup konsumentów Kafka.

Serwery proxy i IPv6

Obsługa proxy HTTP CONNECT znajduje się na nośniku, więc broker za firmowym proxy jest osiągalny, a adres brokera w IPv6 nie wymaga dodatkowej konfiguracji.

Zdarzenia, a nie pętla odpytywania

Odczyt działa we własnym wątku, a przychodzące ramki trafiają jako typowane zdarzenia: OnMQTTPublish, OnAMQPBasicDeliver, OnKafkaMessage, OnSTOMPMessage. Ustaw opcje powiadomień nośnika, aby przekazywać je do głównego wątku w kodzie VCL i FMX.

Subskrybuj i publikuj przez MQTT

Połącz TsgcTCPClient z komponentem protokołu, ustaw poświadczenia, podepnij zdarzenia, a potem wywołaj polecenia protokołu. Ten sam schemat w Object Pascal i C++ Builder oraz ten sam schemat dla pozostałych sześciu komponentów.

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;

Sześć platform, bez gwiazdki

Pakiet komunikacyjny nie ma żadnych ograniczeń platformowych. Wszystkich siedmiu klientów i nośnik pod nimi jest zarejestrowanych dla każdej platformy, jaką generuje kompilator, od usługi Windows po telefon z Androidem, z jednego drzewa źródeł.

Wszystkich 7 klientów protokołów MQTT, AMQP 0.9.1, AMQP 1.0, Kafka i trzej klienci STOMP
Windows Win32 Windows Win64 Linux64 macOS iOS Android
Nośnik TsgcTCPClient Gniazdo, TLS, proxy, IPv6 i ponowne łączenie przez WatchDog
Windows Win32 Windows Win64 Linux64 macOS iOS Android
Silnik TLS Wybierany przez TLSOptions.IOHandler
OpenSSL, każda platforma SChannel, tylko Windows
Obsługa IDE Jedno drzewo źródeł, pakiety projektowe dla każdej wersji
Delphi od 7 do 13 C++ Builder
Nośnik WebSocket MQTT przez WebSocket, Web-STOMP i podobne
Nie w sgcMQ Wymaga pakietu sgcWebSockets

Zobacz pełną tabelę standardów i platform na stronie funkcji →

Pakiet samodzielny

sgcMQ jest licencjonowany samodzielnie, już od €249 dla jednego programisty. Wszystkie licencje obejmują pełny kod źródłowy, 1 rok aktualizacji oraz od 50% do 70% rabatu na odnowienie: 50% przy odnowieniu jednego pakietu, 60% przy dwóch, 70% przy trzech lub więcej. sgcAI i sgcMQ liczą się każdy jako jeden pakiet.

sgcMQ

€249

Dostępne licencje Single, Team i Site.

  • Klient MQTT 3.1.1 i 5.0
  • Klienci AMQP 0.9.1 i AMQP 1.0
  • Klient Apache Kafka
  • Klienci STOMP, RabbitMQ i ActiveMQ
  • Środowisko uruchomieniowe sgcWebSockets Core w zestawie
  • Delphi i C++ Builder, wszystkie sześć platform
  • Pełny kod źródłowy
  • 1 rok aktualizacji
★ Nie wymaga licencji bazowej

sgcMQ zawiera środowisko uruchomieniowe sgcWebSockets Core, więc nie ma nic więcej do kupienia.

Zamówienie zawiera dwie pozycje: uprawnienie do środowiska uruchomieniowego sgcWebSockets Core, naliczane jako zero, oraz sam pakiet sgcMQ. Pełne szczegóły cennika.

3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30-dniowa gwarancja zwrotu pieniędzyNie jesteś zadowolony? Poproś o pełny zwrot pieniędzy w ciągu 30 dni od zakupu. Zobacz politykę zwrotów

Porozmawiaj ze swoim brokerem z Delphi

MQTT, AMQP, Kafka i STOMP w jednym pakiecie, zaimplementowane natywnie, ze środowiskiem uruchomieniowym w zestawie i pełnym kodem źródłowym. Windows, Linux, macOS, iOS i Android z tego samego kodu.

Inne produkty eSeGeCe

Połącz sgcMQ z naszymi pozostałymi bibliotekami komponentów dla Delphi, C++ Builder i .NET.

sgcWebSockets

Pełna biblioteka: klienci i serwery WebSocket, HTTP/2, IoT, P2P oraz komponenty AI. To właśnie tutaj mieszka nośnik WebSocket.

Dowiedz się więcej →

sgcQUIC

Komponenty klienta i serwera QUIC (RFC 9000) oraz HTTP/3 (RFC 9114), zbudowane na natywnym silniku QUIC OpenSSL 3.5.

Dowiedz się więcej →

sgcAI

Komponenty AI, LLM i MCP. Jeden komponent czatu sięga do OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok i Mistral.

Dowiedz się więcej →

sgcHTML

Serwerowe komponenty HTML/UI świadome danych dla Delphi, C++ Builder i .NET, z Bootstrap 5 oraz htmx.

Dowiedz się więcej →

sgcSign

Podpisy cyfrowe klasy enterprise. XAdES, PAdES, CAdES i ASiC z 10 dostawcami kluczy oraz 21 profilami krajowymi UE.

Dowiedz się więcej →

sgcOpenAPI

Parser OpenAPI 3.0 i generator SDK. Zamień dowolną specyfikację OpenAPI w silnie typowanego klienta Delphi w kilka sekund.

Dowiedz się więcej →