MQTT消息中间件的⽐较
MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它⼯作在 上,是为硬件性能低下的远程设备以及⽹络状况糟糕的情况下⽽设计的发布/订阅型消息协议,为此,它需要⼀个 。
Mosquitto、RabbitMQ、ActiveMQ和ZeroMQ都是极好的消息中间件
Redis是⼀个基于Key-Value对的NoSQL数据库,开发维护很活跃。虽然它是⼀个Key-Value数据库存储系统,但它本⾝⽀持MQ功能,所以完全可以当做⼀个轻量级的队列服务来使⽤。对于RabbitMQ和Redis的⼊队和出队操作,各执⾏100万次,每10万次记录⼀次执⾏时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同⼤⼩的数据。实验表明:⼊队时,当数据⽐较⼩时Redis的性能要⾼于RabbitMQ,⽽如果数据⼤⼩超过了10K,Redis则慢的⽆法忍受;出队时,⽆论数据⼤⼩,Redis都表现出⾮常好的性能,⽽RabbitMQ 的出队性能则远低于Redis。苟全
除了Apache Apollo之外还有多款软件可作为MQTT代理服务器使⽤,同时这些代理服务器所⽀持的协议往往也并不是只有MQTT⼀种。本⽂就来看看各类MQTT代理服务器都有哪些特性。原⽂地址如下:
译⽂如下:
本页试图记录各种MQTT服务器(代理)⽀持的特性。这是针对它们对MQTT的⽀持;其中很多服务器具有⽐MQTT更⼴泛的功能。
功能游牧民族
备注
QoS 0:服务质量 0,最多传输⼀次。
QoS 1:服务质量1,⾄少传输⼀次。
售后服务管理制度及工作流程QoS 2:服务质量2,仅仅传输⼀次。
auth:验证,⾝份验证授权。
bridge:桥接,服务器代理之间连接
$SYS:主题过滤器通配符,订阅后能够接收到所有以此通配符开头的主题的消息。
dynamic topics:动态主题
cluster:集群
Server QoS
QoS
1
QoS
2
auth bridge$SYS SSL
中国国歌歌词
dynamic
居里夫人资料topics
cluster websockets
plugin
system
2lemetry✔✔✔✔✔§✔✔✔✔✘Apache ActiveMQ✔✔✔✔✘✘✔✔✔✔✔Apache ActiveMQ Artemis✔✔✔✔✘✘✔✔✔✔✔Bevywi IoT Platform✔✔✔✔rm✔✔✔✔✔rm emitter✔§✘✔✘✘✔✔✔✔✘emqttd✔✔✔✔✔✔✔✔✔✔✔flespi✔✔✔✔✘✘✔✔✔✔✘GnatMQ✔✔✔✔✘✘✘✔✘✘✘HBMQTT✔✔✔✔✘✔✔✔✘✔✔HiveMQ✔✔✔✔✔✔✔✔✔✔✔
IBM MessageSight✔✔✔✔✘✔✔✔§✔✘
JoramMQ✔✔✔✔✔✔✔✔✔✔✔Mongoo✔✔????????? moquette✔✔✔✔??✔?rm✔✘mosca✔✔✘✔????✘✔✘mosquitto✔✔✔✔✔✔✔✔§✔✔MQTT.js✔✔✔§✘✘✔✔✘✔✘MqttWk✔✔✔✔✔?✔✔✔✔✘RabbitMQ✔✔✘✔✘✘✔✔??? RSMB✔✔✔✔✔✔✘✔✘✘?
Software AG Universal
✔✔✔✔✘✘✔✔✔rm✘Messaging
Solace✔✔✘✔§✔✔✔✔✔✘SwiftMQ✔✔✔✔✔✘✔✔✔✘✔Trafero Tstack✔✔✔✔✘✘✔✔✘✘✘VerneMQ✔✔✔✔✔✔✔✔✔✔✔WebSphere MQ✔✔✔✔✔✔✔✔???
说明:✔表⽰⽀持,✘表⽰不⽀持,?表⽰未知,§表⽰⽀持但有限制,rm表⽰(roadmap)路线图规划中也就是计划⽀持。
集装箱改变世界
注:Apache Apollo的功能特性参考Apache ActiveMQ
写信作文格式限制
1. MQTT.js 接受提供⽤户名和密码的连接,但实际上并不对连接进⾏⾝份验证。
2. IBM MessageSight ⽀持⼀个⾼可⽤性模式能够提供集群的冗余优势,但是不⽀持针对MQTT的负载均衡。
西芹腰果虾仁3. 2lemetry 使⽤域,其中第⼀个主题段作为域的名称。 $SYS主题空间位于域中 。
4. Solace 没有提供⼀个代理之间专有的桥接⽅案.
5. mosquitto 的集群是在后端级别实现的(⽐如redis, amqp等)。
6. Software AG Universal Messaging提供主动/主动集群(通过专有协议)和桥接(通过专有协议)。