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

一、简介

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 {

 @Bean
 public MqttClientCustomizer mqttClientCustomizer() {
  return creator -> {
   // 设置业务线程数,请自行按需配置,一般可以简单按 cpu 核数 * 2来配置
   creator.mqttExecutor(ThreadUtils.getBizExecutor(10));
  };
 }

}

如果你是使用的 Java21,需要处理的消息量很大,也可以将工作线程设置为虚拟线程。笔者采用虚拟线程模拟耗时进行压测实际处理速度提升非常明显(当然会消耗更多 CPU 和 内存)。

@Configuration(proxyBeanMethods = false)
public class MqttClientCustomizerConfiguration {

 @Bean
 public 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

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小小哭包

创作不易,给作者加个鸡腿吧

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

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

打赏作者

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

抵扣说明:

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

余额充值