IoT messaging systems

RabbitMQ QPID HiveMQ Mosquitto Kafka Redis
Focus broker, enterprise, multi protocoll broker, enterprise small footprint, non relaible networks small footprint, non relaible networks high througthput in memory db + messaging (text only)
Semantics queue (standart, priority), pub/sub queue (standart, priority, sorted, last value), pub/sub pub/sub only pub/sub only queue only queue, pub/sub
Routing default, direct, fanout, topic, header default, direct, fanout, topic, header pub/sub pattern pub/sub pattern missing pub/sub pattern
Min message 60-100 bytes 60-100 bytes 2 byte (header only) 2 byte (header only) 9 byte – queue, 11 byte – topic
Header Rich, JMS-like: ttl, corellation-id, priority etc. Rich, JMS-like: ttl, corellation-id, priority etc. Simple flags: type, qos, dupliction, retain Simple flags: type, qos, dupliction, retain Any serializable data Missing
History Missing Missing Retained message. Retained message. Always Queue as a list (access by index or range)
Consumer delivery Push API and Pull API Push only. Push only. Pull only. Pub/Sub – push, queues – pull
Reliability At least once – producer/consumer acknoledgement. Mandatory routing, redelivered flag, dead-letter queue. At least once – producer/consumer acknoledgement. Dead-letter queue. qos (message): 0 – at most once, 1 – at least once, 2 – exactly once qos (message): 0 – at most once, 1 – at least once, 2 – exactly once. At least once – send „acks“, client offsets. Reliable queue option.
Resilience qos + internal message queeuing, heartbeats, client takeover qos + internal message queeuing, client takeover replication + leader election Pub/Sub client output buffers
Failover/HA Master node + syncronous mirroring Synchronization. Load balancer + replication. HA bridge with replication Partition lead, sync replication, Mirroring Failover + async replication
Persistency Durable queue and messages with delivery_mode=2 (persistent). for qos 1 and 2 Durable connections (qos 1,2), retained message. Always, rolling log. only for queues, not for pub/sub channelsRDB (snapshot), ADB (journal)
Authentication PLAIN, AMQPLAIN, EXTERNAL plugin Cyrus SASL – PLAIN, CRAM-MD5, DIGEST-MD5, GSAPI (Kerberos) plugable – username/password, certificate plugable – username/password, PSK, SSL/TLS certificate SASL – (kerberos, plain, hash) username/password
Autorisation Plugable, regexp ACL. ACL Plugable – ACL + RBAC. Plugable – ACL on topic. Plugable Missing (security proxy)
Encryption SSL/TLS SSL TLS SSL/TLS SSL missing (SSL)
Special features last will, retained messages last will, retained messages message history + manuall offset control FiFo, LiFo, circular queue, manual queue control (insert, trim, len etc.)
Veröffentlicht in Allgemein, BigData, Messaging