mica-mqtt 2.2.5 发布,支持Java21虚拟线程
最佳答案 问答题库1058位专家为你答疑解惑
一、简介
mica-mqtt 基于 java aio 实现的简单、低延迟、高性能 的 mqtt 物联网开源组件。mica-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 broker)
-
物联网(边缘端消息通信)
-
群组类 IM
-
消息推送
-
简单、易用的 mqtt client 客户端
四、更新记录
2.2.5 - 2023-10-05
-
✨ mqtt 业务线程池支持自定义设置为 java21虚拟线程。
-
✨ 更新 GitHub action,java17 改为 java21。
-
✨ ThreadUtil 弃用(暂时未删),切换到 mica-net 中的 ThreadUtils。
发布了快一个月了,终于抽出时间发更新记录,👷工作忙碌加上2个崽,精力真是大不如从前。
五、自定义业务线程池
5.1 mica-mqtt-client 更改业务线程数
重要说明:mica-mqtt client 中默认的业务线程数是 2,考虑到大部分 client 不会用来处理特别密集的消息。
如果你的业务,client 要处理大量的消息、业务处理耗时比较长,或者发现 mica-mqtt client 有消息延迟或者内存开始增长。可以自定义线程池来提高线程数,来解决这种问题。
普通 Java 配置方式:
// 初始化 mqtt 客户端
MqttClient client = MqttClient.create().ip("127.0.0.1").port(1883).username("admin").password("******")// 设置业务线程数,请自行按需配置,一般可以简单按 cpu 核数 * 2来配置.mqttExecutor(ThreadUtils.getBizExecutor(10)).connect();
Spring boot stater 接入配置:
@Configuration(proxyBeanMethods = false)
public class MqttClientCustomizerConfiguration {@Beanpublic MqttClientCustomizer mqttClientCustomizer() {return creator -> {// 设置业务线程数,请自行按需配置,一般可以简单按 cpu 核数 * 2来配置creator.mqttExecutor(ThreadUtils.getBizExecutor(10));};}}
如果你是使用的 Java21,需要处理的消息量很大,也可以将工作线程设置为虚拟线程。笔者采用虚拟线程模拟耗时进行压测实际处理速度提升非常明显(当然会消耗更多 CPU 和 内存)。
@Configuration(proxyBeanMethods = false)
public class MqttClientCustomizerConfiguration {@Beanpublic MqttClientCustomizer mqttClientCustomizer() {return creator -> {// 设置业务线程数,使用 java21 虚拟线程creator.mqttExecutor(Executors.newVirtualThreadPerTaskExecutor());};}}
5.2 mica-mqtt 服务端配置
mica-mqtt 服务端默认的业务线程数是 CPU 核心 2 倍(最小默认为 8),如果服务端也遇到上述业务处理耗时大、消息量大,导致的处理不赢,建议将消息转发到 kafka、rocketmq,然后将耗时的业务添加多个服务去消费 mq。
六、使用文档
-
mqtt 科普、mqttx、mica-mqtt 的使用视频:https://b23.tv/VJ8yc7v
-
mica-mqtt快速开始:https://gitee.com/596392912/mica-mqtt
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"mica-mqtt 2.2.5 发布,支持Java21虚拟线程":http://eshow365.cn/6-42191-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!