mica-mqtt 2.2.12 发布,简化 MqttClientTemplate 构造,方便自定义
JAVA架构日记
共 4478字,需浏览 9分钟
· 2024-04-17
一、简介
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 客户端
四、更新记录
v2.2.12 - 2024-04-16
-
✨ mica-mqtt-client-spring-boot-starter 简化 MqttClientTemplate 构造,方便自定义。 -
✨ mica-mqtt-client-spring-boot-starter 优化 spring event mqtt client 连接监听。 -
✨ mica-mqtt-client-spring-boot-starter 优化注解订阅。 -
🐛 mqtt-client 修复 mqtt5 props 和遗嘱同时配置时连接编码问题。 -
🐛 mica-mqtt-server 遗嘱消息发送判断(2.2.7调整引起)
五、自定义 MqttClientTemplate
在某些场景下我们需要启动多个 mqtt client 来处理和转发多个 mqtt broker 间的数据。
当然如果仅仅做数据处理和转发,建议还是直接 main 方法直接启动 2 个 mica-mqtt client。这样更加简洁,这样不依赖 Spring 打包出来的 jar 才 1M 左右,启动飞快。
/**
* 2 个 mqtt 服务间,使用 2 个 client 做数据传输
*
* @author L.cm
*/
public class MqttClientProxy {
public static void main(String[] args) {
MqttClient client1 = MqttClient.create()
.ip("ip1")
.port(1883)
.clientId("clientI")
.username("mica")
.password("mica")
.debug()
.connectSync();
MqttClient client2 = MqttClient.create()
.ip("ip2")
.port(1883)
.clientId("client2")
.username("mica")
.password("mica")
.debug()
.connectSync();
String[] topics = new String[]{
"$share/test/link/product1/+/event/+/post",
"$share/test/link/product2/+/event/+/post",
"$share/test/link/product3/+/event/+/post"
};
client1.subscribe(topics, MqttQoS.AT_MOST_ONCE, (context, topic, message, payload) -> {
client2.publish(topic, payload);
});
}
}
自定义 MqttClientTemplate Bean:
a. 自定义 MqttClientTemplate bean 2.2.11 开始已简化,老版本建议先升级。
@Configuration
public class OtherMqttClientConfiguration {
@Bean("mqttClientTemplate1")
public MqttClientTemplate mqttClientTemplate1() {
MqttClientCreator mqttClientCreator1 = MqttClient.create()
.ip("mqtt.dreamlu.net")
.username("mica")
.password("mica");
return new MqttClientTemplate(mqttClientCreator1);
}
}
b. 修改 starter 自带的 MqttClientTemplate Bean 引入
由于现在加入了一个新的名为 mqttClientTemplate1
MqttClientTemplate,老的 starter 内置的 MqttClientTemplate 引入也需要添加 bean name。
@Autowired
@Qualifier(MqttClientTemplate.DEFAULT_CLIENT_TEMPLATE_BEAN)
private MqttClientTemplate mqttClientTemplate;
c. 新加入的 mqttClientTemplate1 MqttClientTemplate bean 引入
@Autowired
@Qualifier("mqttClientTemplate1")
private MqttClientTemplate mqttClientTemplate;
d. 新加入的 mqttClientTemplate1 注解订阅
注意:由于 @MqttClientSubscribe
clientTemplateBean 默认是 MqttClientTemplate.DEFAULT_CLIENT_TEMPLATE_BEAN
,所以新增的 mqttClientTemplate1
注解订阅的时候也需要配置。
@MqttClientSubscribe(
value = "/#",
clientTemplateBean = "mqttClientTemplate1"
)
public void sub1(String topic, byte[] payload) {
logger.info("topic:{} payload:{}", topic, ByteBufferUtil.toString(payload));
}
评论
使用 YOLO 进行自定义对象检测
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达我们知道我们可以专门检测一些对象。那么我们如何训练系统检测自定义对象呢?让我们一步一步来。1. 创建数据集机器是通过数据集学习的。数据集必须包含图像和标签。例如,让我的目标是创建一个检测坦克的系统。我准备了从网上下载的坦克图片。然
小白学视觉
0
人工智能周刊#18:微软发布手机端大模型、Llama 3 中文模型列表、苹果开源新项目、
主打尊重隐私的搜索引擎 duckduckgo,也推出了 ai chat 服务,可以使用 chatgpt 或者 claude机器学习周刊:关注 Python、机器学习、深度学习、大模型等硬核技术本期目录:1、Qwen1.5-110B:Qwen1.5 系列的首个千亿参数开源模型2、苹果开源
机器学习算法与Python实战
0
IntelliJ IDEA 2024 首个大版本发布,好用到爆!
关注我们,设为星标,每天7:40不见不散,架构路上与您共享回复架构师获取资源大家好,我是你们的朋友架构君,一个会写代码吟诗的架构师。JetBrains 为多款 IDE 发布了 2024 年度首个大版本更新 (2024.1),包括 IntelliJ IDEA 、WebSt
Java架构师社区
0
小美播报|3月IPTV数据排行榜发布!
小美播报3月IPTV数据排行榜:《与凤行》登顶连续剧榜榜首拥有4.05亿家庭用户的中国IPTV平台已经成为国内主流视听平台,IPTV平台数据对视听产业各环节都具有重要意义。截至2024年4月,全国已有29个省级IPTV加入“看中国”,覆盖全国超2.25亿户家庭、辐射近7亿人。点击查看详情湖南广电与马
流媒体网
0
5G RedCap贯通行动政策文件发布,这些关键词值得关注
作者:赵小飞物联网智库 原创近日,工信部发布了《关于开展2024年度5G轻量化(RedCap)贯通行动的通知》,从标准、网络、芯片模组、终端、应用、安全、保障7大方面采取具体措施,并给出明确目标,在政策层面对5G RedCap进一步发展提供保障。RedCap承担着5G物联网连接数增长的重要任务,但同
物联网智库
0
第二十四届中国·盱眙国际龙虾节重点活动菜单发布!
今天盱眙龙虾开捕活动现场发布第二十四届中国·盱眙国际龙虾节重点活动菜单盱眙老妹微信自媒体主要从事:品牌推广︎、活动策划︎、微信平台营销代运营︎、免费发布公益便民信息、企业招聘︎、商标注册、征婚交友、公益救助、维权爆料等服务。欢迎广大网友积极参与。免责声明:盱眙老妹微信平台是面向普通网友的信息发布平台
盱眙老妹
0
雷军回应被称爽文第一男主;Meta推出开源大模型Llama 3;特步就北京半程马拉松赛发布致歉声明
雷军:没模仿马斯克、乔布斯,卡里也没有冰冷的40亿,SU7正式版本开始交付4月18日,小米集团CEO雷军开播,与网友畅谈SU7开售这20天并带领大家参观小米交付中心。在直播中雷军称:”很多人都催我们快一点交付啊,雷总你能不能去工厂打螺丝啊。今天我们这个工厂是现代化工厂啊,主要的工艺都是全自动化生产的
亿欧网
0
小美播报|网络文学IP微短剧扶持项目在无锡发布
小美播报福建广电网络集团召开2024年第一季度经营分析会4月16日,福建广电网络集团在莆田召开第一季度经营分析会,总结分析一季度经营成效,部署安排第二季度工作任务,要求持续深化拓展“深学争优、敢为争先、实干争效”行动部署,确保“双过半”目标实现。点击查看详情广西广电网络公司与华数集团举行战略合作协议
流媒体网
0