• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

mica-mqtt: 基于 java aio 网络框架 t-io 实现的低延迟、高性能的 mqtt client 组件和 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

mica-mqtt

开源软件地址:

https://gitee.com/596392912/mica-mqtt

开源软件介绍:

mica mqtt 组件

Java CIJAVA 8Mica Maven releaseMica-mqtt maven snapshotsCodacy BadgeGitHub

基于 t-io 实现的低延迟高性能mqtt 物联网组件。更多使用方式详见: mica-mqtt-example 模块。

使用场景

  • 物联网(云端 mqtt broker)
  • 物联网(边缘端消息通信)
  • 群组类 IM
  • 消息推送
  • 简单易用的 mqtt 客户端

优势

  • 平凡却不单调,简单却不失精彩。
  • 手动档(更加易于二次开发或扩展)。
  • 牛犊初生,无限可能。

功能

  • 支持 MQTT v3.1、v3.1.1 以及 v5.0 协议。
  • 支持 websocket mqtt 子协议(支持 mqtt.js)。
  • 支持 http rest api,http api 文档详见
  • 支持 MQTT client 客户端。
  • 支持 MQTT server 服务端。
  • 支持 MQTT 遗嘱消息。
  • 支持 MQTT 保留消息。
  • 支持自定义消息(mq)处理转发实现集群。
  • MQTT 客户端 阿里云 mqtt 连接 demo。
  • 支持 GraalVM 编译成本机可执行程序。
  • 支持 Spring boot 项目快速接入(mica-mqtt-spring-boot-starter)。
  • mica-mqtt-spring-boot-starter 支持对接 Prometheus + Grafana。
  • 基于 redis pub/sub 实现集群,详见 mica-mqtt-broker 模块

待办

  • 优化处理 mqtt session,以及支持 v5.0
  • 基于 easy-rule + druid sql 解析,实现规则引擎。

默认端口

端口号协议说明
1883tcpmqtt tcp 端口
8083http、websockethttp api 和 websocket mqtt 子协议端口

依赖

Spring boot 项目

<dependency>  <groupId>net.dreamlu</groupId>  <artifactId>mica-mqtt-spring-boot-starter</artifactId>  <version>1.2.10</version></dependency>

配置详见mica-mqtt-spring-boot-starter 使用文档

非 Spring boot 项目

<dependency>  <groupId>net.dreamlu</groupId>  <artifactId>mica-mqtt-core</artifactId>  <version>1.2.10</version></dependency>

配置详见mica-mqtt 使用文档

文档

快速开始

查看 mica-mqtt-example 中有 mqtt 服务端和客户端演示代码, main 方法运行即可。

1. 启动 Server 端

运行 mica-mqtt-example/src/main/java/net/dreamlu/iot/mqtt/server/MqttServerTest.javamain 方法

控制台打印如下内容:

2021-07-05 20:42:36,869 INFO  server.TioServer - |----------------------------------------------------------------------------------------|| t-io site         | https://www.tiocloud.com                                           || t-io on gitee     | https://gitee.com/tywo45/t-io                                      || t-io on github    | https://github.com/tywo45/t-io                                     || t-io version      | 3.7.3.v20210706-RELEASE                                            || ---------------------------------------------------------------------------------------|| TioConfig name    | Mica-Mqtt-Server                                                   || Started at        | 2021-07-05 20:42:36                                                || Listen on         | 127.0.0.1:1883                                                     || Main Class        | net.dreamlu.iot.mqtt.server.MqttServerTest                         || Jvm start time    | 2715ms                                                             || Tio start time    | 16ms                                                               || Pid               | 3588                                                               ||----------------------------------------------------------------------------------------|2021-07-05 20:42:37,884 WARN  server.MqttServer - Mqtt publish to all ChannelContext is empty.

Mqtt publish to all ChannelContext is empty. 通道上下文为空,即没有客户端。

Mica-Mqtt-Server ├ 当前时间:1625489086843 ├ 连接统计 │ 	 ├ 共接受过连接数  :0 │ 	 ├ 当前连接数            :0 │ 	 ├ 异IP连接数           :0 │ 	 └ 关闭过的连接数  :0 ├ 消息统计 │ 	 ├ 已处理消息  :0 │ 	 ├ 已接收消息(packet/byte):0/0 │ 	 ├ 已发送消息(packet/byte):0/0b │ 	 ├ 平均每次TCP包接收的字节数  :0.0 │ 	 └ 平均每次TCP包接收的业务包  :0.0 └ IP统计时段    	 └ 没有设置ip统计时间 ├ 节点统计 │ 	 ├ clientNodes :0 │ 	 ├ 所有连接               :0 │ 	 ├ 绑定user数         :0 │ 	 ├ 绑定token数       :0 │ 	 └ 等待同步消息响应 :0 ├ 群组 │ 	 └ groupmap:0 └ 拉黑IP    	 └ []2021-07-05 20:44:46,925 WARN  server.ServerTioConfig - Mica-Mqtt-Server, 检查心跳, 共0个连接, 取锁耗时0ms, 循环耗时71ms, 心跳超时时间:120000ms

2. 启动 Client 端

运行 mica-mqtt-example/src/main/java/net/dreamlu/iot/mqtt/client/MqttClientTest.javamain 方法

控制台打印如下内容,表示客户端连接成功:

2021-07-05 20:46:10,972 ERROR client.TioClient - closeds:0, connections:02021-07-05 20:46:10,972 INFO  client.TioClient - [1]: curr:0, closed:0, received:(0p)(0b), handled:0, sent:(0p)(0b)2021-07-05 20:46:12,566 INFO  client.ConnectionCompletionHandler - connected to 127.0.0.1:18832021-07-05 20:46:12,586 INFO  client.MqttClient - MqttClient reconnect send connect result:true2021-07-05 20:46:12,630 INFO  client.DefaultMqttClientProcessor - MqttClient connection succeeded!2021-07-05 20:46:13,932 INFO  client.MqttClientTest - /test/123	mica最牛皮

此时的 Server 端会打印出如下内容:

2021-07-05 20:46:45,654 INFO  server.MqttServerTest - subscribe:	/test/client	mica最牛皮2021-07-05 20:46:46,926 WARN  server.ServerTioConfig - Mica-Mqtt-Server ├ 当前时间:1625489206923 ├ 连接统计 │ 	 ├ 共接受过连接数  :1 │ 	 ├ 当前连接数            :1 │ 	 ├ 异IP连接数           :1 │ 	 └ 关闭过的连接数  :0 ├ 消息统计 │ 	 ├ 已处理消息  :20 │ 	 ├ 已接收消息(packet/byte):20/584 │ 	 ├ 已发送消息(packet/byte):37/935b │ 	 ├ 平均每次TCP包接收的字节数  :29.2 │ 	 └ 平均每次TCP包接收的业务包  :1.0 └ IP统计时段    	 └ 没有设置ip统计时间 ├ 节点统计 │ 	 ├ clientNodes :1 │ 	 ├ 所有连接               :1 │ 	 ├ 绑定user数         :0 │ 	 ├ 绑定token数       :0 │ 	 └ 等待同步消息响应 :0 ├ 群组 │ 	 └ groupmap:0 └ 拉黑IP    	 └ []2021-07-05 20:46:46,926 WARN  server.ServerTioConfig - Mica-Mqtt-Server, 检查心跳, 共1个连接, 取锁耗时0ms, 循环耗时0ms, 心跳超时时间:120000ms

3. Client 接入 Aliyun MQTT 服务(示例)

详见 mica-mqtt-example/src/main/java/net/dreamlu/iot/mqtt/aliyun/MqttClientTest.java

参考vs借鉴

mqtt 客户端工具

开源推荐

鸣谢

感谢 JetBrains 提供的免费开源 License:

JetBrains

微信公众号

如梦技术

精彩内容每日推荐!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
vue-big-screen: 发布时间:2022-03-25
下一篇:
DockerFly: Dockerfly是基于 Docker1.12+ (Docker API 1.24+) 开发出Docker 管理工具, ...发布时间:2022-03-25
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap