sgcMQ Özellik Matrisi: MQTT, AMQP, Kafka, STOMP | eSeGeCe

sgcMQ Özellik Matrisi

sgcMQ'nun yaptığı her şey, yedi istemci bileşeni ve uyguladıkları belirtimler üzerinden eşlenmiş. Her yetenek Delphi ve C++ Builder'da aynı şekilde çalışır ve her lisans tam kaynak koduyla gelir. Kullanım ve örnekleri içeren kendi sayfası için bir bileşene tıklayın.

MQTT

3.1.1 ve 5.0

AMQP

0.9.1 ve 1.0

Kafka

Yerel hat protokolü

STOMP

1.0 / 1.1 / 1.2

Taşıma & TLS

Düz TCP ve TLS

Standartlar & Platformlar

Delphi 7'den 13'e, C++ Builder

sgcMQ kendi kendine yeter. sgcWebSockets Core çalışma zamanı pakete dahil olarak gelir, bu yüzden bir eklenti değildir ve satın alınacak bir temel lisans yoktur.

Taşıma: düz TCP ve TLS. sgcMQ, düz TCP ve TLS üzerinden bağlanır. Protokolü bunun yerine WebSocket üzerinden çalıştırmanız gerekiyorsa, örneğin WebSocket üzerinden MQTT ya da WebSocket üzerinden AMQP, bu bir sgcWebSockets paketi gerektirir ve WebSocket istemcisini o sağlar.

Aşağıdaki tablolarda yer alan her yeteneğe, sgcMQ'nun kutuda birlikte verdiği ham TCP taşıyıcısı TsgcTCPClient üzerinden erişilir.

Yedi Palet Bileşeni

SGC MQ palet sayfasına kayıtlı dört protokol ailesi.

BileşenSınıfAileAçıklama
MQTT İstemcisiTsgcWSPClient_MQTTMQTTMQTT 3.1.1 ve 5.0 yayınlama/abone olma: QoS 0/1/2, saklanan mesajlar, Last Will and Testament, oturumlar ve MQTT 5 özellikleri.
AMQP 0.9.1 İstemcisiTsgcWSPClient_AMQPAMQPKanallar, exchange'ler, kuyruklar ve bağlamalar, tüketiciler, onaylar, prefetch QoS ve işlemler.
AMQP 1.0 İstemcisiTsgcWSPClient_AMQP1AMQPOturumlar, gönderici ve alıcı bağlantıları, krediye dayalı akış denetimi, SASL kimlik doğrulaması ve Azure CBS token yardımcıları.
Kafka İstemcisiTsgcWSPClient_KafkaKafkaAcks ve gzip destekli üretici, yeniden dengeleme ve offset kaydetme özellikli tüketici grupları, konu yönetimi.
STOMP İstemcisiTsgcWSPClient_STOMPSTOMPSTOMP 1.0/1.1/1.2 çerçeveleri: SEND, SUBSCRIBE, ACK, NACK, makbuzlar, kalp atışı ve işlemler.
STOMP RabbitMQ İstemcisiTsgcWSPClient_STOMP_RabbitMQSTOMPRabbitMQ için ayarlanmış STOMP: TCP ya da TLS üzerinden kuyruk, konu, exchange, harici kuyruk ve geçici kuyruk yardımcıları.
STOMP ActiveMQ İstemcisiTsgcWSPClient_STOMP_ActiveMQSTOMPApache ActiveMQ için ayarlanmış STOMP; kuyruk ve konu yardımcılarının yanı sıra bir ActiveMQ_Options özelliği.

MQTT 3.1.1 ve MQTT 5.0

IoT'nin yayınlama/abone olma protokolü; hizmet kalitesi mekanizmasının tamamı gizlenmek yerine açığa çıkarılmış.

Yetenek3.1.15.0Notlar
Protokol sürümü seçimiMQTTVersion, mqtt311 ya da mqtt5 değerini alır.
QoS 0, 1 ve 2QoS 2 alışverişi yutulmaz; OnMQTTPubRec, OnMQTTPubRel ve OnMQTTPubComp olarak açığa çıkarılır.
Saklanan mesajlarSaklama bayrağı, Publish metodunun dördüncü argümanıdır.
Last Will and TestamentLastWillTestament; konu, mesaj, QoS ve saklama bilgisini taşır.
Joker karakterli aboneliklerBir düzey için +, ağacın geri kalanı için #.
OturumlarOnMQTTConnect olayının Session argümanı, broker'ın bir oturumu devam ettirip ettirmediğini bildirir.
Yayınla ve beklePublishAndWait, broker paketi onaylayana kadar bekler.
Bir akış yayınlamaPublish, ikili yükler için bir TStream aşırı yüklemesine sahiptir.
Sebep kodları ve adlarıMQTT 5, CONNACK ve DISCONNECT üzerinde sayısal bir sebep kodu ve adını döndürür.
CONNECT özellikleriConnectProperties; oturum sona erme süresini, alım üst sınırını, en büyük paket boyutunu ve konu takma adı üst sınırını ayarlar.
Konu takma adlarıHat üzerinde uzun bir konu adının yerini kısa bir tam sayı alır ve gelen paketlerde otomatik olarak çözümlenir.
Kullanıcı özellikleriİsteğe bağlı anahtar/değer çiftleri CONNECT, PUBLISH, SUBSCRIBE ve DISCONNECT ile birlikte taşınır.
Paylaşılan aboneliklerTeslimatları bir istemci grubuna dağıtmak için $share/<group>/<topic> konusuna abone olun.
Gelişmiş kimlik doğrulamaSoru-cevap şemaları için Auth ve OnMQTTAuth üzerinden AUTH paketi gidiş-dönüşü.
Bağlantıyı canlı tutmaHeartBeat, PINGREQ'i yürütür ve yanıtta OnMQTTPing tetiklenir.

AMQP 0.9.1 ve AMQP 1.0

Adından başka hiçbir ortak yanı olmayan iki protokol; bu yüzden sgcMQ, tek bir API'nin ikisine de uyduğunu varsaymak yerine her biri için ayrı bir bileşen sunar.

YetenekAMQP 0.9.1AMQP 1.0Notlar
BileşenTsgcWSPClient_AMQPTsgcWSPClient_AMQP1Farklı hat biçimi, farklı nesne modeli, farklı bileşen.
Çoğullama birimiKanalOturumOpenChannel'a karşı CreateSession.
Topoloji tanımlamaDeclareExchange, DeclareQueue, BindQueueAMQP 1.0, broker üzerindeki düğümleri tanımlamak yerine adresler.
GöndermePublishMessage(channel, exchange, routingKey, body)SendMessage(session, link, text)0.9.1'de yönlendirme anahtarı, 1.0'da hedef adres.
AlmaConsume, ardından OnAMQPBasicDeliverCreateReceiverLink, ardından OnAMQPMessageKurulduktan sonra ikisi de push tabanlıdır.
OnaylamaAckMessage / RejectMessageOnAMQPMessageSentAck0.9.1 bir teslimat etiketini onaylar, 1.0 bir teslimatı sonlandırır.
Akış denetimiSetQoS prefetch, EnableChannel / DisableChannelKrediye dayalı (CreditSize, WindowSize)Her ikisi de hızlı bir üreticinin yavaş bir tüketiciyi boğmasını engeller.
İşlemlerSelectTransaction, CommitTransaction, RollbackTransactionKanal başına açığa çıkarılan 0.9.1 tx sınıfı.
Kuyruk bakımıPurgeQueue, DeleteQueue, DeleteExchange, UnBindQueueCloseLink, CloseSessionHer biri, broker yanıtını bekleyen engelleyici bir ...Ex varyantına sahiptir.
Yeniden teslimRecover / RecoverAsyncBroker'dan onaylanmamış mesajları yeniden teslim etmesini isteyin.
Kimlik doğrulamaOnAMQPAuthentication, OnAMQPChallengeAuthentication.AuthType, OnAMQPSASLAuthentication1.0; SASL ANONYMOUS, PLAIN ve EXTERNAL sunar.
Bulut yardımcılarıCreateCBSLink, PutCBSToken, CreateAzureCbsSasToken, CreateAzureCbsJWTAzure Service Bus ve Event Hubs için Claims-Based Security.
CanlılıkHeartBeatPing, AMQPOptions.IdleTimeoutBağlantı sırasında broker ile müzakere edilir.
Bağlantı ayarlarıAMQPOptions.VirtualHost, MaxChannels, MaxFrameSize, LocaleAMQPOptions.ContainerId, ChannelMax, MaxFrameSize, MaxLinksPerSessionAçılış handshake'inde gönderilir ve broker ile müzakere edilir.
PrefetchSetQoS(channel, prefetchSize, prefetchCount, global)AMQPOptions.CreditSizeBroker'ın aynı anda kaç onaylanmamış mesaj taşıyabileceği.
Çerçeve incelemeOnAMQPBeforeReadFrame, OnAMQPBeforeWriteFrameHam çerçeveleri işlenmeden ya da gönderilmeden önce görün ya da yeniden yazın.

Apache Kafka, Doğrudan Konuşulur

Object Pascal ile uygulanmış ikili Kafka protokolü; önde bir REST proxy'si, altta bir librdkafka yok.

YetenekAPINotlar
Bir kayıt üretmeProduce(topic, value, key, partition)Anahtar ve bölüm isteğe bağlıdır. ProduceBytes, her ikisi için de TBytes alır.
Bir yığın üretmeProduceMessages(topic, partition, messages)Tüm yığın için broker'ın üretim yanıtını döndürür.
Teslimat garantisiKafkaOptions.Producer.AckskafkaAcksNone, kafkaAcksLeader ya da kafkaAcksAll.
SıkıştırmaKafkaOptions.Producer.CompressionkafkaCompressionNone ya da kafkaCompressionGzip.
TüketmeSubscribe([topics]), ardından Poll(timeoutMs)Poll, bir TsgcKafkaMessages listesi döndürür ve ayrıca kayıt başına OnKafkaMessage tetikler.
Tüketici gruplarıKafkaOptions.Consumer.GroupIdKoordinatör keşfi, katılma, senkronizasyon ve kalp atışı sizin yerinize yürütülür. OnKafkaRebalance, atama değişikliklerini bildirir.
Offset politikasıKafkaOptions.Consumer.OffsetResetKaydedilmiş bir offset yoksa kafkaOffsetEarliest ya da kafkaOffsetLatest.
Offset kaydetmeCommitSync, CommitOffset(topic, partition, offset)Ya da Consumer.AutoCommit'i AutoCommitIntervalMs ile ayarlayın.
Bir bölümü doğrudan okumaFetchMessages(topic, partition, offset, maxBytes)Tüketici grubunu tamamen atlar.
Offset sorgulamaGetEarliestOffset, GetLatestOffset, GetCommittedOffsetKonu ve bölüm başına.
Getirme ayarlarıConsumer.MinBytes, MaxBytes, MaxPartitionBytes, MaxWaitMsGecikmeyi yığın boyutuyla dengeleyin.
Konu yönetimiCreateTopic, DeleteTopic, GetMetadataOluştururken bölüm sayısı ve çoğaltma faktörü.
Grup yönetimiListGroups, DescribeGroupsTüketici gruplarını kendi araçlarınızdan inceleyin.
Broker yetenek yoklamasıGetApiVersionsBroker'a hangi protokol API sürümlerini desteklediğini sorun.
SASLkafkaSaslNone, kafkaSaslPlainSASL/PLAIN kullanıcı adı ve parola kimlik doğrulaması.

STOMP 1.0, 1.1 ve 1.2

Tek bir genel istemci ve RabbitMQ ile ActiveMQ hedef kurallarını adlandırılmış metotlara dönüştüren, broker'a özel iki türev bileşen.

YetenekSTOMPRabbitMQActiveMQNotlar
Bir çerçeve göndermeSendPublishExPublishExHedef, gövde, içerik türü ve isteğe bağlı işlem.
Abone olmaSubscribe(id, destination)SubscribeExSubscribeExTürev bileşenler dayanıklı, özel ve ack modu argümanlarını ekler.
Kuyruk yardımcılarıSubscribeQueue, PublishQueue, UnSubscribeQueueSubscribeQueue, PublishQueue, UnSubscribeQueueSarmalanmış /queue/ hedef öneki.
Konu yardımcılarıSubscribeTopic, PublishTopic, UnSubscribeTopicSubscribeTopic, PublishTopic, UnSubscribeTopicSarmalanmış /topic/ hedef öneki.
Exchange yardımcılarıSubscribeExchange, PublishExchangeYönlendirme desenli, RabbitMQ'nun /exchange/ hedefi.
Harici kuyruklarSubscribeQueueOutside, PublishQueueOutsideBaşka bir yerde tanımlanmış kuyruklar için RabbitMQ'nun /amq/queue/ hedefi.
Geçici yanıt kuyruklarıSubscribeTemporaryQueue, PublishTemporaryQueueRabbitMQ'nun /temp-queue/ istek/yanıt deseni.
OnaylamaACK / NACKAbonelik başına seçilen ack modu (ackAuto ve benzerleri).
İşlemlerBeginTransaction, CommitTransaction, AbortTransactionBirden çok SEND ve ACK çerçevesini tek bir atomik birimde gruplayın.
MakbuzlarOnSTOMPReceiptOnRabbitMQReceiptOnActiveMQReceiptBroker, işlediği bir çerçeveyi onaylar.
Mesaj olayıOnSTOMPMessageOnRabbitMQMessageOnActiveMQMessageHedefi, gövdeyi ve çerçeve başlıklarını teslim eder.
Kalp atışıHeartBeat, PingCONNECT çerçevesinde, her iki yön için müzakere edilir.
Sürüm müzakeresiVersions.V1_0, V1_1, V1_2Kabul ettiğiniz sürümleri duyurun, broker birini seçsin.
Sanal ana bilgisayarOptions.VirtualHostCONNECT üzerinde host başlığı olarak gönderilir.
Broker uzantılarıActiveMQ_OptionsYayımlanmış bir özellik olarak açığa çıkarılan, ActiveMQ'ya özgü başlıklar.

Baytlar Broker'a Nasıl Ulaşır

Her protokol bileşeni, Client özelliği üzerinden bir TsgcTCPClient nesnesine bağlanır. Bu tek taşıyıcı, protokol kodunu değiştirmeden size düz TCP ve TLS sağlar.

AlanAyrıntı
Düz TCPClient özelliğine bir TsgcTCPClient atayın; protokol, broker'ın yerel bağlantı noktasında doğrudan soket üzerinden çalışır.
WebSocketsgcMQ'da yoktur. Bir WebSocket taşıyıcısı, örneğin WebSocket üzerinden MQTT ya da Web-STOMP, sgcWebSockets ile gelen WebSocket istemcisini gerektirir.
TLSTaşıyıcı üzerinde TLSOptions; TLSOptions.IOHandler, çok platformlu derlemeler için OpenSSL'i ya da Windows'ta SChannel'ı seçer.
İstemci sertifikalarıAynı TLSOptions üzerinden karşılıklı TLS; bir PEM dosyasından, bir PKCS#12 paketinden ya da Windows sertifika deposundan.
Proxy'lerTaşıyıcıda HTTP CONNECT proxy desteği; böylece kurumsal bir proxy arkasındaki broker'a erişilebilir.
Yeniden bağlanmaTaşıyıcıdaki WatchDog, kopan bir bağlantının ardından yapılandırılabilir bir aralık ve deneme sayısıyla yeniden bağlanır.
IPv6Taşıyıcı tarafından desteklenir, bu nedenle bir IPv6 broker adresi ek yapılandırma gerektirmez.
İş parçacığı yönetimiOkuma kendi iş parçacığında çalışır. VCL ve FMX kodu için olayları ana iş parçacığına aktarmak üzere taşıyıcının bildirim ayarlarını yapın.

Belirtimler, Derleyiciler ve Hedefler

Yayımlanmış protokoller ve desteklenen her derleyicide aynı kaynak kodu.

AlanAyrıntı
MQTTOASIS MQTT 3.1.1 ve MQTT 5.0.
AMQP 0.9.1AMQP 0-9-1 belirtimi: kanallar, exchange'ler, kuyruklar, bağlamalar ve basic sınıfı.
AMQP 1.0ISO/IEC 19464 olarak da yayımlanan OASIS AMQP 1.0.
Kafkav2 kayıt yığını biçimi dahil olmak üzere, TCP üzerinden Apache Kafka hat protokolü.
STOMPSTOMP 1.0, 1.1 ve 1.2.
WebSocketDahil değildir. Bir WebSocket taşıyıcısı, WebSocket istemcisini sağlayan sgcWebSockets ürününü gerektirir.
TLSOpenSSL ya da Windows SChannel üzerinden TLS 1.2 ve TLS 1.3.
DerleyicilerDelphi ve C++ Builder 7'den 13'e.
PlatformlarWin32, Win64, Linux64, macOS, iOS ve Android.
LisanslamaBağımsız. sgcWebSockets Core çalışma zamanı pakete dahildir ve tam kaynak kodu içerilir.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

sgcMQ ile Geliştirin

Ücretsiz deneme sürümünü indirin ve Delphi ya da C++ Builder'dan broker'ınıza bağlanın.