Matryca funkcji sgcMQ: MQTT, AMQP, Kafka, STOMP | eSeGeCe

sgcMQ Matryca funkcji

Wszystko, co robi sgcMQ, rozpisane na siedem komponentów klienckich i specyfikacje, które implementują. Każda funkcja działa tak samo w Delphi i C++ Builder, a każda licencja zawiera pełny kod źródłowy. Kliknij komponent, aby przejść na jego stronę z opisem użycia i przykładami.

MQTT

3.1.1 i 5.0

AMQP

0.9.1 i 1.0

Kafka

Natywny protokół sieciowy

STOMP

1.0 / 1.1 / 1.2

Transport i TLS

Zwykły TCP i TLS

Standardy i platformy

Delphi od 7 do 13, C++ Builder

sgcMQ jest samowystarczalny. Jest dostarczany z dołączonym środowiskiem uruchomieniowym sgcWebSockets Core, więc nie jest dodatkiem i nie ma licencji bazowej do kupienia.

Transport: zwykły TCP i TLS. sgcMQ łączy się przez zwykły TCP i TLS. Jeśli potrzebujesz uruchomić protokół przez WebSocket, na przykład MQTT przez WebSocket lub AMQP przez WebSocket, wymaga to pakietu sgcWebSockets, który dostarcza klienta WebSocket.

Każda funkcja z poniższych tabel jest osiągana przez surowy nośnik TCP TsgcTCPClient, który sgcMQ dostarcza w zestawie.

Siedem komponentów palety

Cztery rodziny protokołów, zarejestrowane na stronie palety SGC MQ.

KomponentKlasaRodzinaOpis
MQTT ClientTsgcWSPClient_MQTTMQTTPublikowanie i subskrypcja w MQTT 3.1.1 i 5.0: QoS 0/1/2, wiadomości zachowane, Last Will and Testament, sesje i właściwości MQTT 5.
AMQP 0.9.1 ClientTsgcWSPClient_AMQPAMQPKanały, wymiany, kolejki i powiązania, konsumenci, potwierdzenia, QoS prefetch i transakcje.
AMQP 1.0 ClientTsgcWSPClient_AMQP1AMQPSesje, łącza nadawcze i odbiorcze, kontrola przepływu oparta na kredytach, uwierzytelnianie SASL i funkcje pomocnicze tokenów Azure CBS.
Kafka ClientTsgcWSPClient_KafkaKafkaProducent z acks i gzip, grupy konsumentów z równoważeniem i zatwierdzaniem offsetów, administracja tematami.
STOMP ClientTsgcWSPClient_STOMPSTOMPRamki STOMP 1.0/1.1/1.2: SEND, SUBSCRIBE, ACK, NACK, potwierdzenia, heart-beating i transakcje.
STOMP RabbitMQ ClientTsgcWSPClient_STOMP_RabbitMQSTOMPSTOMP dostosowany do RabbitMQ: funkcje pomocnicze dla kolejek, tematów, wymian, kolejek zewnętrznych i tymczasowych, przez TCP lub TLS.
STOMP ActiveMQ ClientTsgcWSPClient_STOMP_ActiveMQSTOMPSTOMP dostosowany do Apache ActiveMQ, z funkcjami pomocniczymi dla kolejek i tematów oraz właściwością ActiveMQ_Options.

MQTT 3.1.1 i MQTT 5.0

Protokół publikowania i subskrypcji świata IoT, z pełnym mechanizmem jakości usługi wystawionym na wierzch, a nie ukrytym.

Możliwość3.1.15.0Uwagi
Wybór wersji protokołuMQTTVersion przyjmuje mqtt311 lub mqtt5.
QoS 0, 1 i 2Wymiana QoS 2 jest wystawiona jako OnMQTTPubRec, OnMQTTPubRel i OnMQTTPubComp, a nie ukryta.
Wiadomości zachowaneFlaga retain jest czwartym argumentem metody Publish.
Last Will and TestamentLastWillTestament niesie temat, wiadomość, QoS i flagę retain.
Subskrypcje z symbolami wieloznacznymi+ dla jednego poziomu, # dla reszty drzewa.
SesjeArgument Session zdarzenia OnMQTTConnect informuje, czy broker wznowił sesję.
Publikuj i czekajPublishAndWait blokuje do czasu potwierdzenia pakietu przez brokera.
Publikowanie strumieniaPublish ma przeciążenie TStream dla ładunków binarnych.
Kody i nazwy przyczynMQTT 5 zwraca numeryczny kod przyczyny i jego nazwę w CONNACK i DISCONNECT.
Właściwości CONNECTConnectProperties ustawia wygasanie sesji, maksymalny odbiór, maksymalny rozmiar pakietu i maksymalny alias tematu.
Aliasy tematówKrótka liczba całkowita zastępuje długą nazwę tematu w transmisji, rozwiązywana automatycznie w pakietach przychodzących.
Właściwości użytkownikaDowolne pary klucz/wartość podróżują z CONNECT, PUBLISH, SUBSCRIBE i DISCONNECT.
Subskrypcje współdzieloneSubskrybuj $share/<group>/<topic>, aby rozłożyć dostarczanie na grupę klientów.
Rozszerzone uwierzytelnianieWymiana pakietu AUTH przez Auth i OnMQTTAuth, dla schematów typu wyzwanie/odpowiedź.
Keep-aliveHeartBeat steruje PINGREQ, a OnMQTTPing jest zgłaszane po otrzymaniu odpowiedzi.

AMQP 0.9.1 i AMQP 1.0

Dwa protokoły, które łączy tylko nazwa, dlatego sgcMQ dostarcza osobny komponent dla każdego z nich, zamiast udawać, że jedno API pasuje do obu.

MożliwośćAMQP 0.9.1AMQP 1.0Uwagi
KomponentTsgcWSPClient_AMQPTsgcWSPClient_AMQP1Inny format sieciowy, inny model obiektowy, inny komponent.
Jednostka multipleksowaniaKanałSesjaOpenChannel wobec CreateSession.
Deklarowanie topologiiDeclareExchange, DeclareQueue, BindQueueAMQP 1.0 adresuje węzły na brokerze, zamiast je deklarować.
WysyłaniePublishMessage(channel, exchange, routingKey, body)SendMessage(session, link, text)Klucz routingu w 0.9.1, adres docelowy w 1.0.
OdbieranieConsume, a następnie OnAMQPBasicDeliverCreateReceiverLink, a następnie OnAMQPMessageOba działają w trybie push po nawiązaniu połączenia.
PotwierdzanieAckMessage / RejectMessageOnAMQPMessageSentAck0.9.1 potwierdza znacznik dostarczenia, 1.0 rozlicza dostarczenie.
Kontrola przepływuPrefetch przez SetQoS, EnableChannel / DisableChannelOparta na kredytach (CreditSize, WindowSize)Oba mechanizmy chronią wolnego konsumenta przed szybkim producentem.
TransakcjeSelectTransaction, CommitTransaction, RollbackTransactionKlasa tx z 0.9.1, wystawiona osobno dla każdego kanału.
Utrzymanie kolejekPurgeQueue, DeleteQueue, DeleteExchange, UnBindQueueCloseLink, CloseSessionKażda z blokującym wariantem ...Ex, który czeka na odpowiedź brokera.
Ponowne dostarczanieRecover / RecoverAsyncPoproś brokera o ponowne dostarczenie niepotwierdzonych wiadomości.
UwierzytelnianieOnAMQPAuthentication, OnAMQPChallengeAuthentication.AuthType, OnAMQPSASLAuthentication1.0 oferuje SASL ANONYMOUS, PLAIN i EXTERNAL.
Funkcje pomocnicze dla chmuryCreateCBSLink, PutCBSToken, CreateAzureCbsSasToken, CreateAzureCbsJWTClaims-Based Security dla Azure Service Bus i Event Hubs.
Sprawdzanie aktywnościHeartBeatPing, AMQPOptions.IdleTimeoutNegocjowane z brokerem przy łączeniu.
Strojenie połączeniaAMQPOptions.VirtualHost, MaxChannels, MaxFrameSize, LocaleAMQPOptions.ContainerId, ChannelMax, MaxFrameSize, MaxLinksPerSessionWysyłane w otwierającym handshake i negocjowane z brokerem.
PrefetchSetQoS(channel, prefetchSize, prefetchCount, global)AMQPOptions.CreditSizeIle niepotwierdzonych wiadomości broker może mieć w locie.
Inspekcja ramekOnAMQPBeforeReadFrame, OnAMQPBeforeWriteFramePodglądaj lub przepisuj surowe ramki, zanim zostaną przetworzone albo wysłane.

Apache Kafka, bezpośrednio

Binarny protokół Kafka zaimplementowany w Object Pascal, bez proxy REST z przodu i bez librdkafka pod spodem.

MożliwośćAPIUwagi
Publikowanie rekorduProduce(topic, value, key, partition)Klucz i partycja są opcjonalne. ProduceBytes przyjmuje TBytes dla obu.
Publikowanie wsaduProduceMessages(topic, partition, messages)Zwraca odpowiedź brokera dla całego wsadu.
Gwarancja dostarczeniaKafkaOptions.Producer.AckskafkaAcksNone, kafkaAcksLeader lub kafkaAcksAll.
KompresjaKafkaOptions.Producer.CompressionkafkaCompressionNone lub kafkaCompressionGzip.
KonsumowanieSubscribe([topics]), a następnie Poll(timeoutMs)Poll zwraca listę TsgcKafkaMessages i dodatkowo zgłasza OnKafkaMessage dla każdego rekordu.
Grupy konsumentówKafkaOptions.Consumer.GroupIdWykrywanie koordynatora, dołączanie, synchronizacja i heartbeat są obsługiwane za ciebie. OnKafkaRebalance raportuje zmiany przydziału.
Polityka offsetówKafkaOptions.Consumer.OffsetResetkafkaOffsetEarliest lub kafkaOffsetLatest, gdy nie ma zatwierdzonego offsetu.
Zatwierdzanie offsetówCommitSync, CommitOffset(topic, partition, offset)Albo ustaw Consumer.AutoCommit wraz z AutoCommitIntervalMs.
Bezpośredni odczyt partycjiFetchMessages(topic, partition, offset, maxBytes)Całkowicie omija grupę konsumentów.
Wyszukiwanie offsetówGetEarliestOffset, GetLatestOffset, GetCommittedOffsetDla każdego tematu i partycji.
Strojenie pobieraniaConsumer.MinBytes, MaxBytes, MaxPartitionBytes, MaxWaitMsWyważ opóźnienie względem rozmiaru wsadu.
Administracja tematamiCreateTopic, DeleteTopic, GetMetadataLiczba partycji i współczynnik replikacji przy tworzeniu.
Administracja grupamiListGroups, DescribeGroupsSprawdzaj grupy konsumentów z własnych narzędzi.
Badanie możliwości brokeraGetApiVersionsZapytaj brokera, które wersje API protokołu obsługuje.
SASLkafkaSaslNone, kafkaSaslPlainUwierzytelnianie SASL/PLAIN nazwą użytkownika i hasłem.

STOMP 1.0, 1.1 i 1.2

Jeden klient ogólny plus dwaj potomkowie dostosowani do konkretnych brokerów, którzy zamieniają konwencje adresowania RabbitMQ i ActiveMQ na nazwane metody.

MożliwośćSTOMPRabbitMQActiveMQUwagi
Wysłanie ramkiSendPublishExPublishExMiejsce docelowe, treść, typ zawartości i opcjonalna transakcja.
SubskrypcjaSubscribe(id, destination)SubscribeExSubscribeExPotomkowie dodają argumenty durable, exclusive i tryb potwierdzania.
Funkcje pomocnicze kolejekSubscribeQueue, PublishQueue, UnSubscribeQueueSubscribeQueue, PublishQueue, UnSubscribeQueueOpakowany prefiks miejsca docelowego /queue/.
Funkcje pomocnicze tematówSubscribeTopic, PublishTopic, UnSubscribeTopicSubscribeTopic, PublishTopic, UnSubscribeTopicOpakowany prefiks miejsca docelowego /topic/.
Funkcje pomocnicze wymianSubscribeExchange, PublishExchangeMiejsce docelowe /exchange/ RabbitMQ ze wzorcem routingu.
Kolejki zewnętrzneSubscribeQueueOutside, PublishQueueOutside/amq/queue/ RabbitMQ, dla kolejek zadeklarowanych gdzie indziej.
Tymczasowe kolejki odpowiedziSubscribeTemporaryQueue, PublishTemporaryQueueWzorzec żądanie/odpowiedź /temp-queue/ RabbitMQ.
PotwierdzanieACK / NACKTryb potwierdzania wybierany osobno dla każdej subskrypcji (ackAuto i pokrewne).
TransakcjeBeginTransaction, CommitTransaction, AbortTransactionGrupuj kilka ramek SEND i ACK w jedną atomową jednostkę.
Potwierdzenia odbioruOnSTOMPReceiptOnRabbitMQReceiptOnActiveMQReceiptBroker potwierdza przetworzoną ramkę.
Zdarzenie wiadomościOnSTOMPMessageOnRabbitMQMessageOnActiveMQMessageDostarcza miejsce docelowe, treść i nagłówki ramki.
Heart-beatingHeartBeat, PingNegocjowane w ramce CONNECT, w obu kierunkach.
Negocjacja wersjiVersions.V1_0, V1_1, V1_2Zgłoś wersje, które akceptujesz, a broker wybierze jedną.
Host wirtualnyOptions.VirtualHostWysyłany jako nagłówek host w CONNECT.
Rozszerzenia brokeraActiveMQ_OptionsNagłówki specyficzne dla ActiveMQ, wystawione jako opublikowana właściwość.

Jak bajty docierają do brokera

Każdy komponent protokołu podłącza się do TsgcTCPClient przez właściwość Client. Ten jeden nośnik daje ci zwykły TCP i TLS bez zmiany kodu protokołu.

ObszarSzczegóły
Zwykły TCPPrzypisz TsgcTCPClient do Client, a protokół pobiegnie prosto przez gniazdo, na natywnym porcie brokera.
WebSocketNie jest częścią sgcMQ. Nośnik WebSocket, na przykład MQTT przez WebSocket lub Web-STOMP, wymaga klienta WebSocket dostarczanego z sgcWebSockets.
TLSTLSOptions na nośniku, gdzie TLSOptions.IOHandler wybiera OpenSSL dla kompilacji wieloplatformowych albo SChannel na Windows.
Certyfikaty klientaWzajemne TLS przez te same TLSOptions, z pliku PEM, pakietu PKCS#12 albo magazynu certyfikatów Windows.
Serwery proxyObsługa proxy HTTP CONNECT na nośniku, dzięki czemu broker za firmowym proxy jest osiągalny.
Ponowne łączenieWatchDog na nośniku łączy się ponownie po zerwaniu połączenia, z konfigurowalnym interwałem i liczbą prób.
IPv6Obsługiwane przez nośnik, więc adres brokera w IPv6 nie wymaga dodatkowej konfiguracji.
WątkiOdczyt działa we własnym wątku. Ustaw opcje powiadomień nośnika, aby przekazywać zdarzenia do głównego wątku w kodzie VCL i FMX.

Specyfikacje, kompilatory i platformy docelowe

Opublikowane protokoły i te same źródła we wszystkich obsługiwanych kompilatorach.

ObszarSzczegóły
MQTTOASIS MQTT 3.1.1 i MQTT 5.0.
AMQP 0.9.1Specyfikacja AMQP 0-9-1: kanały, wymiany, kolejki, powiązania i klasa basic.
AMQP 1.0OASIS AMQP 1.0, opublikowany także jako ISO/IEC 19464.
KafkaProtokół sieciowy Apache Kafka przez TCP, wraz z formatem wsadu rekordów v2.
STOMPSTOMP 1.0, 1.1 i 1.2.
WebSocketNie jest zawarty. Nośnik WebSocket wymaga sgcWebSockets, który dostarcza klienta WebSocket.
TLSTLS 1.2 i TLS 1.3 przez OpenSSL albo Windows SChannel.
KompilatoryDelphi i C++ Builder od 7 do 13.
PlatformyWin32, Win64, Linux64, macOS, iOS i Android.
LicencjonowanieProdukt samodzielny. Środowisko uruchomieniowe sgcWebSockets Core jest dołączone, a pełny kod źródłowy jest w zestawie.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Twórz z sgcMQ

Pobierz bezpłatną wersję próbną i połącz się ze swoim brokerem z Delphi lub C++ Builder.