Matrice delle funzionalità di sgcMQ: MQTT, AMQP, Kafka, STOMP | eSeGeCe

sgcMQ matrice delle funzionalità

Tutto quello che fa sgcMQ, mappato sui sette componenti client e sulle specifiche che implementano. Ogni funzionalità si comporta allo stesso modo in Delphi e in C++ Builder, e ogni licenza include il codice sorgente completo. Clicca su un componente per la sua pagina dedicata con utilizzo ed esempi.

MQTT

3.1.1 e 5.0

AMQP

0.9.1 e 1.0

Kafka

Protocollo binario nativo

STOMP

1.0 / 1.1 / 1.2

Trasporto e TLS

TCP semplice e TLS

Standard e piattaforme

Da Delphi 7 a 13, C++ Builder

sgcMQ è autosufficiente. Viene distribuito con il runtime sgcWebSockets Core incluso, quindi non è un componente aggiuntivo e non c'è nessuna licenza base da comprare.

Trasporto: TCP semplice e TLS. sgcMQ si connette tramite TCP semplice e TLS. Se ti serve far girare il protocollo su WebSocket, per esempio MQTT su WebSocket o AMQP su WebSocket, è necessario un package sgcWebSockets, che fornisce il client WebSocket.

Ogni funzionalità nelle tabelle qui sotto si raggiunge attraverso il vettore TCP grezzo TsgcTCPClient, che sgcMQ include nella confezione.

Sette componenti nella palette

Quattro famiglie di protocolli, registrate sulla pagina della palette SGC MQ.

ComponenteClasseFamigliaDescrizione
MQTT ClientTsgcWSPClient_MQTTMQTTPublish/subscribe MQTT 3.1.1 e 5.0: QoS 0/1/2, messaggi retained, Last Will and Testament, sessioni e property di MQTT 5.
AMQP 0.9.1 ClientTsgcWSPClient_AMQPAMQPCanali, exchange, code e binding, consumer, conferme, prefetch QoS e transazioni.
AMQP 1.0 ClientTsgcWSPClient_AMQP1AMQPSessioni, link sender e receiver, controllo di flusso a credito, autenticazione SASL e funzioni di supporto per i token CBS di Azure.
Kafka ClientTsgcWSPClient_KafkaKafkaProducer con acks e gzip, consumer group con rebalance e commit degli offset, amministrazione dei topic.
STOMP ClientTsgcWSPClient_STOMPSTOMPFrame STOMP 1.0/1.1/1.2: SEND, SUBSCRIBE, ACK, NACK, ricevute, heart-beating e transazioni.
STOMP RabbitMQ ClientTsgcWSPClient_STOMP_RabbitMQSTOMPSTOMP ottimizzato per RabbitMQ: funzioni di supporto per code, topic, exchange, code esterne e code temporanee, su TCP o TLS.
STOMP ActiveMQ ClientTsgcWSPClient_STOMP_ActiveMQSTOMPSTOMP ottimizzato per Apache ActiveMQ, con funzioni di supporto per code e topic più una proprietà ActiveMQ_Options.

MQTT 3.1.1 e MQTT 5.0

Il protocollo publish/subscribe dell'IoT, con tutto il meccanismo della qualità del servizio esposto invece che nascosto.

Funzionalità3.1.15.0Note
Scelta della versione del protocolloMQTTVersion accetta mqtt311 o mqtt5.
QoS 0, 1 e 2Lo scambio QoS 2 emerge come OnMQTTPubRec, OnMQTTPubRel e OnMQTTPubComp, non viene inghiottito.
Messaggi retainedIl flag retain è il quarto argomento di Publish.
Last Will and TestamentLastWillTestament contiene topic, messaggio, QoS e retain.
Sottoscrizioni con caratteri jolly+ per un livello, # per il resto dell'albero.
SessioniL'argomento Session di OnMQTTConnect indica se il broker ne ha ripresa una.
Pubblicare e attenderePublishAndWait blocca finché il broker non conferma il pacchetto.
Pubblicare uno streamPublish ha un overload TStream per i payload binari.
Reason code e nomiMQTT 5 restituisce un reason code numerico e il suo nome su CONNACK e DISCONNECT.
Property di CONNECTConnectProperties imposta la scadenza della sessione, il receive maximum, la dimensione massima del pacchetto e il numero massimo di alias dei topic.
Alias dei topicUn intero corto sostituisce sul filo un nome di topic lungo, risolto automaticamente sui pacchetti in entrata.
User propertyCoppie chiave/valore arbitrarie viaggiano con CONNECT, PUBLISH, SUBSCRIBE e DISCONNECT.
Sottoscrizioni condiviseSottoscrivi $share/<group>/<topic> per distribuire le consegne su un gruppo di client.
Autenticazione avanzataLo scambio del pacchetto AUTH tramite Auth e OnMQTTAuth, per gli schemi a sfida e risposta.
Keep-aliveHeartBeat pilota il PINGREQ, con OnMQTTPing sollevato alla risposta.

AMQP 0.9.1 e AMQP 1.0

Due protocolli che condividono un nome e nient'altro, quindi sgcMQ distribuisce un componente separato per ciascuno invece di fingere che una sola API vada bene per entrambi.

FunzionalitàAMQP 0.9.1AMQP 1.0Note
ComponenteTsgcWSPClient_AMQPTsgcWSPClient_AMQP1Formato binario diverso, modello a oggetti diverso, componente diverso.
Unità di multiplexingCanaleSessioneOpenChannel contro CreateSession.
Dichiarazione della topologiaDeclareExchange, DeclareQueue, BindQueueAMQP 1.0 indirizza i nodi sul broker invece di dichiararli.
InvioPublishMessage(channel, exchange, routingKey, body)SendMessage(session, link, text)Routing key sulla 0.9.1, indirizzo di destinazione sulla 1.0.
RicezioneConsume poi OnAMQPBasicDeliverCreateReceiverLink poi OnAMQPMessageEntrambi sono basati su push una volta stabiliti.
ConfermaAckMessage / RejectMessageOnAMQPMessageSentAckLa 0.9.1 conferma un delivery tag, la 1.0 definisce una consegna.
Controllo di flussoprefetch con SetQoS, EnableChannel / DisableChannelBasato su credito (CreditSize, WindowSize)Entrambi impediscono a un producer veloce di sommergere un consumer lento.
TransazioniSelectTransaction, CommitTransaction, RollbackTransactionLa classe tx della 0.9.1, esposta per canale.
Manutenzione delle codePurgeQueue, DeleteQueue, DeleteExchange, UnBindQueueCloseLink, CloseSessionOgnuna con una variante bloccante ...Ex che attende la risposta del broker.
RiconsegnaRecover / RecoverAsyncChiedi al broker di riconsegnare i messaggi senza conferma.
AutenticazioneOnAMQPAuthentication, OnAMQPChallengeAuthentication.AuthType, OnAMQPSASLAuthenticationLa 1.0 offre SASL ANONYMOUS, PLAIN ed EXTERNAL.
Supporto per il cloudCreateCBSLink, PutCBSToken, CreateAzureCbsSasToken, CreateAzureCbsJWTClaims-Based Security per Azure Service Bus ed Event Hubs.
LivenessHeartBeatPing, AMQPOptions.IdleTimeoutNegoziata con il broker alla connessione.
Regolazione della connessioneAMQPOptions.VirtualHost, MaxChannels, MaxFrameSize, LocaleAMQPOptions.ContainerId, ChannelMax, MaxFrameSize, MaxLinksPerSessionInviata nell'handshake iniziale e negoziata con il broker.
PrefetchSetQoS(channel, prefetchSize, prefetchCount, global)AMQPOptions.CreditSizeQuanti messaggi senza conferma il broker può avere in volo.
Ispezione dei frameOnAMQPBeforeReadFrame, OnAMQPBeforeWriteFrameOsserva o riscrivi i frame grezzi prima che vengano elaborati o inviati.

Apache Kafka, parlato direttamente

Il protocollo binario di Kafka implementato in Object Pascal, senza nessun proxy REST davanti e senza librdkafka sotto.

FunzionalitàAPINote
Produrre un recordProduce(topic, value, key, partition)Chiave e partizione sono facoltative. ProduceBytes accetta TBytes per entrambe.
Produrre un batchProduceMessages(topic, partition, messages)Restituisce la risposta di produzione del broker per l'intero batch.
Garanzia di consegnaKafkaOptions.Producer.AckskafkaAcksNone, kafkaAcksLeader o kafkaAcksAll.
CompressioneKafkaOptions.Producer.CompressionkafkaCompressionNone o kafkaCompressionGzip.
ConsumareSubscribe([topics]) poi Poll(timeoutMs)Poll restituisce una lista TsgcKafkaMessages e solleva anche OnKafkaMessage per ogni record.
Consumer groupKafkaOptions.Consumer.GroupIdLa scoperta del coordinatore, il join, la sincronizzazione e gli heartbeat sono gestiti per te. OnKafkaRebalance segnala i cambi di assegnazione.
Politica degli offsetKafkaOptions.Consumer.OffsetResetkafkaOffsetEarliest o kafkaOffsetLatest quando non c'è nessun offset confermato.
Confermare gli offsetCommitSync, CommitOffset(topic, partition, offset)Oppure imposta Consumer.AutoCommit con AutoCommitIntervalMs.
Leggere una partizione direttamenteFetchMessages(topic, partition, offset, maxBytes)Aggira del tutto il consumer group.
Ricerca degli offsetGetEarliestOffset, GetLatestOffset, GetCommittedOffsetPer topic e partizione.
Regolazione del fetchConsumer.MinBytes, MaxBytes, MaxPartitionBytes, MaxWaitMsBilancia la latenza contro la dimensione del batch.
Amministrazione dei topicCreateTopic, DeleteTopic, GetMetadataNumero di partizioni e fattore di replica alla creazione.
Amministrazione dei gruppiListGroups, DescribeGroupsIspeziona i consumer group dai tuoi strumenti.
Sondaggio delle capability del brokerGetApiVersionsChiedi al broker quali versioni delle API del protocollo supporta.
SASLkafkaSaslNone, kafkaSaslPlainAutenticazione SASL/PLAIN con nome utente e password.

STOMP 1.0, 1.1 e 1.2

Un client generico più due discendenti specifici per broker che trasformano le convenzioni di destinazione di RabbitMQ e ActiveMQ in metodi con un nome.

FunzionalitàSTOMPRabbitMQActiveMQNote
Inviare un frameSendPublishExPublishExDestinazione, corpo, content type e transazione facoltativa.
SottoscrivereSubscribe(id, destination)SubscribeExSubscribeExI discendenti aggiungono gli argomenti durable, exclusive e modalità di ack.
Funzioni per le codeSubscribeQueue, PublishQueue, UnSubscribeQueueSubscribeQueue, PublishQueue, UnSubscribeQueueIl prefisso di destinazione /queue/, incapsulato.
Funzioni per i topicSubscribeTopic, PublishTopic, UnSubscribeTopicSubscribeTopic, PublishTopic, UnSubscribeTopicIl prefisso di destinazione /topic/, incapsulato.
Funzioni per gli exchangeSubscribeExchange, PublishExchangeLa destinazione /exchange/ di RabbitMQ con un pattern di routing.
Code esterneSubscribeQueueOutside, PublishQueueOutsideIl /amq/queue/ di RabbitMQ, per le code dichiarate altrove.
Code di risposta temporaneeSubscribeTemporaryQueue, PublishTemporaryQueueLo schema richiesta/risposta /temp-queue/ di RabbitMQ.
ConfermareACK / NACKModalità di ack scelta per ogni sottoscrizione (ackAuto e simili).
TransazioniBeginTransaction, CommitTransaction, AbortTransactionRaggruppa più frame SEND e ACK in un'unica unità atomica.
RicevuteOnSTOMPReceiptOnRabbitMQReceiptOnActiveMQReceiptIl broker conferma un frame che ha elaborato.
Evento del messaggioOnSTOMPMessageOnRabbitMQMessageOnActiveMQMessageConsegna la destinazione, il corpo e gli header del frame.
Heart-beatingHeartBeat, PingNegoziato nel frame CONNECT, in entrambe le direzioni.
Negoziazione della versioneVersions.V1_0, V1_1, V1_2Dichiara le versioni che accetti, il broker ne sceglie una.
Virtual hostOptions.VirtualHostInviato come header host sul CONNECT.
Estensioni del brokerActiveMQ_OptionsHeader specifici di ActiveMQ, esposti come proprietà pubblicata.

Come i byte arrivano al broker

Ogni componente di protocollo si collega a un TsgcTCPClient tramite la sua proprietà Client. Quell'unico vettore ti dà TCP semplice e TLS senza cambiare il codice del protocollo.

AmbitoDettaglio
TCP sempliceAssegna un TsgcTCPClient a Client e il protocollo gira direttamente sul socket, sulla porta nativa del broker.
WebSocketNon incluso in sgcMQ. Un vettore WebSocket, per esempio MQTT su WebSocket o Web-STOMP, richiede il client WebSocket distribuito con sgcWebSockets.
TLSTLSOptions sul vettore, con TLSOptions.IOHandler che sceglie OpenSSL per le build multipiattaforma oppure SChannel su Windows.
Certificati clientTLS mutuo attraverso le stesse TLSOptions, da un file PEM, un bundle PKCS#12 o l'archivio certificati di Windows.
ProxySupporto per i proxy HTTP CONNECT sul vettore, così un broker dietro a un proxy aziendale resta raggiungibile.
RiconnessioneWatchDog sul vettore si riconnette dopo una caduta del collegamento, con intervallo e numero di tentativi configurabili.
IPv6Supportato dal vettore, quindi un indirizzo di broker IPv6 non richiede nessuna configurazione aggiuntiva.
ThreadingLa lettura gira su un thread dedicato. Imposta le opzioni di notifica del vettore per far arrivare gli eventi sul thread principale nel codice VCL e FMX.

Specifiche, compilatori e target

Protocolli pubblicati, e lo stesso sorgente su ogni compilatore supportato.

AmbitoDettaglio
MQTTOASIS MQTT 3.1.1 e MQTT 5.0.
AMQP 0.9.1La specifica AMQP 0-9-1: canali, exchange, code, binding e la classe basic.
AMQP 1.0OASIS AMQP 1.0, pubblicata anche come ISO/IEC 19464.
KafkaIl protocollo binario di Apache Kafka su TCP, incluso il formato record batch v2.
STOMPSTOMP 1.0, 1.1 e 1.2.
WebSocketNon incluso. Un vettore WebSocket richiede sgcWebSockets, che fornisce il client WebSocket.
TLSTLS 1.2 e TLS 1.3 tramite OpenSSL, oppure SChannel di Windows.
CompilatoriDelphi e C++ Builder dalla versione 7 alla 13.
PiattaformeWin32, Win64, Linux64, macOS, iOS e Android.
LicenzeAutonomo. Il runtime sgcWebSockets Core è incluso e il codice sorgente completo fa parte della fornitura.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Costruisci con sgcMQ

Scarica la versione di prova gratuita e connettiti al tuo broker da Delphi o C++ Builder.