MQTT 开源热门的MQTT Broker 对比

EMQ、HiveMQ、VerneMQ、ActiveMQ、Mosquitto

对比项目EMQHiveMQVerneMQActiveMQMosquitto
License开源+商业版开源+商业版开源+商业版开源开源
公司/社区EMQHiveMQVerenMQApache 基金会Eclipse 基金会
开源协议Apache License 2.0Apache License 2.0Apache License 2.0Apache License 2.0EPL/EDL licensed
开发团队杭州映云科技有限公司dc-square 股份有限公司,德国Octavo Labs AG,瑞士Apache 项目维护者Eclipse 开源社区
开发语言ErlangJavaErlangJavaC
项目历史2012年开始开源,2016年开始商业化2013 年成立,一直以闭源方式向客户提供软件,2019 年开源提供基于开源的商业化定制服务2004 由 LogicBlaze 创建;原本规划的 ActiveMQ 的下一代开源项目 Apollo 已经不活动(4年没有代码更新) 
集群架构支持仅企业版支持支持不支持(有伪集群实现)
系统部署物理机、虚拟机、K8S物理机、虚拟机、K8S物理机、虚拟机、K8S物理机、虚拟机、容器物理机、虚拟机、容器
支持协议MQTT、CoAP、MQTT-SN、WebSocket、TCP、UDP、LwM2MMQTTMQTTJMS、Openwire、Stomp、AMQP、MQTT、WebSocket XMPPMQTT、WebSocket
系统性能单机性能较高,单机支持百万级并发,集群支持千万级并发集群支持千万级并发集群支持百万级并发支持集群单机10W
MQTTv3.1,v3.1.1,v5.0v3.1,v3.1.1,v5.0v3.1,v3.1.1,v5.0v3.1v3.1,v3.1.1,v5.0
边缘计算EMQ X Edge 支持树莓派,ARM 等架构,支持数据同步到云服务 Azure IoT Hub AWS不支持不支持不支持支持(自身比较轻量)
安全与认证TLS/DTLS、X.509证书、JWT、OAuth2.0、应用协议(ID/用户名/密码)、数据库与接口形式的认证与 ACL 功能(LDAP、DB、HTTP)TLS/DTLS、X.509证书、JWT、OAuth2.0、应用协议(ID/用户名/密码)、配置文件形式的认证与 ACL 功能TLS/DTLS、X.509证书、配置文件形式的认证与 ACL 功能、数据库形式的认证与 ACL 功能,但支持数据库较少LDAP (JAAS)、Apache Shiro等待
运行持久化支持将消息数据持久化至外部数据库如 Redis、MySQL、PostgreSQL、MongoDB、Cassa、Dynamo 等,需企业版,开源版宕机则丢失开源企业均支持本地持久化,采用磁盘系统,支持备份,导出备份支持持久化至 Google LevelDBAMQ、KahaDB、JDBC、LevelDB等待
扩展方式Webhook、Trigger、Plugin 等,支持 Erlang 与 Lua、Java、Python 扩展开发,支持 Webhook 开发,侵入性不强Trigger、Plugin 等,使用 Java 技术栈开发,提供方便开发的 SDKTrigger、Plugin 等,支持 Erlang 与 Lua 扩展开发Java 扩展等待
数据存储企业版适配数据库:Redis、Mysql、PostgreSQL、MongoDB、Cassandra、OpenTSDB、TimescaleDB、InfluxDB 适配消息队列:Kakfa、RabbitMQ、Pulsar 桥接模式:支持桥接至标准 MQTT 协议消息服务适配数据库:无,提供 Java SDK 开发进行适配适配数据库:无,提供 Erlang 和 Lua 扩展开发 适配消息队列:无 桥接模式:支持桥接至标准 MQTT 协议消息服务适配数据库:JDBC、KahaDB、LevelDB 适配消息队列:无 桥接模式:支持通过 JMS 桥接等待
开源版支持 HTTP 将数据同步、存储消息队列:Kafka 桥接模式:支持桥接至标准 MQTT 协议消息服务
管理监控支持可视化的 Dashboard,实现集群与节点的统一集中管理 支持第三方监控工具 Prometheus ,提供可视化 Grafana 界面模板支持可视化的 HiveMQ Control Center,实现集群与节点统一管理 支持第三方监控工具 Prometheus ,可提供可视化 Grafana 界面 支持 InfluxDB 监控内置简单状态管理可视化界面 支持第三方监控工具 Prometheus ,可提供可视化 Grafana 界面支持可视化的监控界面 支持第三方监控工具 Prometheus ,可提供可视化 Grafana 界面通过 MQTT 订阅系统主题
规则引擎支持规则引擎,基于 SQL 的规则引擎给予 Broker 超越一般消息中间件的能力。除了在接受转发消息之外,规则引擎还可以解析消息的格式(企业版)。不支持不支持不支持不支持
开发集成支持通过 REST API 进行常用的业务管理操作如: 调整设置、获取 Broker 状态信息、进行消息发布、代理订阅与取消订阅、断开指定客户端、查看客户端列表、规则引擎管理、插件管理,提供 Java SDK、Python SDK 直接编码处理业务逻辑无,提供 Java SDK 在应用系统在编码的层面操作进程,非常灵活但耦合性高提供少量 REST API,用于监控与状态管理、客户端管理等。 缺乏代理订阅、业务管理等功能和 API提供少量队列管理 REST API等待
适用场景优势在于高并发连接与高吞吐消息的服务能力,以及物联网协议栈支持的完整性;扩展能力较强,无需过多开发有一定高并发连接与高吞吐消息的服务能力,物联网协议栈的完整性较弱仅支持 MQTT 协议;缺乏开箱即用的功能插件,功能必须编码使用基础的并发连接与高吞吐消息的服务能力,物联网协议栈的完整性较弱仅支持 MQTT 协议;扩展能力较差,基础的业务组件支持度不够,商业成熟度不足客户量较少,缺乏开箱即用的功能插件核心是消息队列系统,主要用于支持异构应用之间的消息通信,比如用于企业消息总线等;后面支持了部分物联网协议。ActiveMQ 比较适合系统既要支持传统的异构应用之间需要通信,也需要支持小型物联网接入支持的用户。轻量简便的 MQTT Broker,工控、网关或小规模接入项目

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot提供了多个开源框架,可以用于实现MQTT功能。其中一个常用的框架是Eclipse Paho,它是一个基于Java的MQTT客户端库。通过使用Eclipse Paho,你可以方便地在Spring Boot应用程序中集成MQTT功能。 要在Spring Boot项目中使用Eclipse Paho,你需要添加相应的依赖项到你的项目配置文件(例如pom.xml)。以下是一个使用Eclipse Paho实现MQTT功能的示例代码: 首先,添加依赖项到pom.xml文件: ```xml <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.5</version> </dependency> ``` 然后,在你的Spring Boot应用程序中创建一个MQTT配置类,配置MQTT连接参数和相关的Bean: ```java @Configuration public class MqttConfig { @Value("${mqtt.broker-url}") private String brokerUrl; @Value("${mqtt.client-id}") private String clientId; @Bean public MqttConnectOptions mqttConnectOptions() { MqttConnectOptions options = new MqttConnectOptions(); options.setAutomaticReconnect(true); // 设置其他连接参数 return options; } @Bean public MqttClient mqttClient() throws MqttException { MqttClient client = new MqttClient(brokerUrl, clientId); client.connect(mqttConnectOptions()); return client; } } ``` 最后,在需要使用MQTT功能的地方注入MqttClient并使用它发送和接收消息: ```java @Service public class MyMqttService { private final MqttClient mqttClient; public MyMqttService(MqttClient mqttClient) { this.mqttClient = mqttClient; } public void publishMessage(String topic, String message) throws MqttException { MqttMessage mqttMessage = new MqttMessage(message.getBytes()); mqttClient.publish(topic, mqttMessage); } public void subscribeToTopic(String topic) throws MqttException { mqttClient.subscribe(topic, (topic, message) -> { // 处理接收到的消息 String content = new String(message.getPayload()); System.out.println("Received message: " + content); }); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN.LG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值