当前位置:首页 > 编程笔记 > 正文
已解决

mica-mqtt 2.2.5 发布,支持Java21虚拟线程

来自网友在路上 11058105提问 提问时间:2023-11-26 20:31:46阅读次数: 105

最佳答案 问答题库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 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!