Govern EventBus v1.0.0 发布,事件驱动架构框架
Govern EventBus v1.0.0 已经发布,事件驱动架构框架。 此版本更新内容包括: 使用 Simba 作为事件补偿选主组建 新增支持 PublishEvent.eventDataId 详情查看:https://gitee.com/AhooWang/govern-eventbus/releases/v1.0.0
mica-mqtt 基于 t-io 实现的简单、低延迟、高性能 的 mqtt 物联网开源组件。使用详见 mica-mqtt gitee 源码 mica-mqtt-example 模块。
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 模块。
物联网(云端)
物联网(边缘端)
群组类 IM
消息推送
优化处理 mqtt session,以及支持部分 mqtt v5.0 新特性。
基于 easy-rule + druid sql 解析,实现规则引擎。
✨ mqtt-mqtt-core client IMqttClientConnectListener 添加 onDisconnect 方法。gitee #I4JT1D 感谢 @willianfu 同学反馈。
✨ mica-mqtt-core server IMqttMessageListener 接口调整,不兼容老版本。
✨ mica-mqtt-broker 调整上下行消息通道。
✨ mica-mqtt-broker 添加节点管理,抽象业务层,方便接入,后续版本会对接规则引擎。
✨ mica-mqtt-broker 调整默认的 Message 序列化方式,不兼容老版本。
✨ mica-mqtt-broker 优化设备上下线,处理节点停机的情况。
✨ 抽取 mica-mqtt-model 模块,方便后期支持消息桥接,Message 添加默认的消息序列化。 gitee #I4ECEO
✨ mica-mqtt-model 完善 Message 消息模型,方便集群。
🐛 mica-mqtt-core MqttClient 修复 ssl 没有设置,感谢 @hjkJOJO 同学反馈。
🐛 修复 websocket mqtt.js 需要拆包 gitee #I4JYJX 感谢 @Symous 同学反馈。
📝 完善 mica-mqtt-broker README.md,添加二开说明。
📝 统一 mica-mqtt server ip 文档。
📝 更新 README.md
⬆️ 升级 tio 到 3.7.5.v20211028-RELEASE AioDecodeException 改为 TioDecodeException,
public interface IMqttClientConnectListener { /** * 监听到消息 * * @param context ChannelContext * @param isReconnect 是否重连 */ void onConnected(ChannelContext context, boolean isReconnect); /** * 连接关闭前触发本方法 * * @param channelContext the channelContext * @param throwable the throwable 有可能为空 * @param remark the remark 有可能为空 * @param isRemove is removed */ void onDisconnect(ChannelContext channelContext, Throwable throwable, String remark, boolean isRemove); }
@FunctionalInterface public interface IMqttMessageListener { /** * 监听到消息 * * @param context ChannelContext * @param clientId clientId * @param message Message */ void onMessage(ChannelContext context, String clientId, Message message); }
为了以后版本更方便的对接规则引擎对 Message 中的属性进行了扩充,并且内置 DefaultMessageSerializer 序列化,基于 ByteBuffer 进行的类协议解析的方式,速度更快,报文更小。
byte[] data = DefaultMessageSerializer.INSTANCE.serialize(message); Message message1 = DefaultMessageSerializer.INSTANCE.deserialize(data);
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-mqtt-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency>
mqtt: server: enabled: true # 是否开启,默认:true ip: 0.0.0.0 # 服务端 ip 默认:0.0.0.0 port: 5883 # 端口,默认:1883 name: Mica-Mqtt-Server # 名称,默认:Mica-Mqtt-Server buffer-allocator: HEAP # 堆内存和堆外内存,默认:堆内存 heartbeat-timeout: 120000 # 心跳超时,单位毫秒,默认: 1000 * 120 read-buffer-size: 8092 # 接收数据的 buffer size,默认:8092 max-bytes-in-message: 8092 # 消息解析最大 bytes 长度,默认:8092 debug: true # 如果开启 prometheus 指标收集建议关闭 websocket-enable: true # 开启 websocket 子协议,默认开启 websocket-port: 8083 # websocket 端口,默认:8083
| 接口 | 是否必须 | 说明 |
|---|---|---|
| IMqttServerUniqueIdService | 否 | 用于 clientId 不唯一时,自定义实现唯一标识,后续接口使用它替代 clientId |
| IMqttServerAuthHandler | 是 | 用于服务端认证 |
| IMqttServerSubscribeValidator | 是 | 1.1.3 新增,用于服务端订阅校验 |
| IMqttMessageListener | 是 | 消息监听 |
| IMqttConnectStatusListener | 是 | 连接状态监听 |
| IMqttSessionManager | 否 | session 管理 |
| IMqttMessageStore | 集群是,单机否 | 遗嘱和保留消息存储 |
| AbstractMqttMessageDispatcher | 集群是,单机否 | 消息转发,(遗嘱、保留消息转发) |
| IpStatListener | 否 | t-io ip 状态监听 |
得益于 t-io 良好的设计,监控指标直接对接的 t-iostat,目前支持下列指标,后期会不断完善。
| 支持得指标 | 说明 |
|---|---|
| mqtt_connections_accepted | 共接受过连接数 |
| mqtt_connections_closed | 关闭过的连接数 |
| mqtt_connections_size | 当前连接数 |
| mqtt_messages_handled_packets | 已处理消息数 |
| mqtt_messages_handled_bytes | 已处理消息字节数 |
| mqtt_messages_received_packets | 已接收消息数 |
| mqtt_messages_received_bytes | 已处理消息字节数 |
| mqtt_messages_send_packets | 已发送消息数 |
| mqtt_messages_send_bytes | 已发送消息字节数 |
关于 mica-mqtt-spring-boot-starter 更多请查看文档:https://gitee.com/596392912/mica-mqtt/tree/master/mica-mqtt-spring-boot-starter
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-mqtt-core</artifactId> <version>1.2.0</version> </dependency>
// 初始化 mqtt 客户端 MqttClient client = MqttClient.create() .ip("127.0.0.1") .port(1883) // 默认:1883 .username("admin") .password("123456") .version(MqttVersion.MQTT_5) // 默认:3_1_1 .clientId("xxxxxx") // 默认:MICA-MQTT- 前缀和 36进制的纳秒数 .connect(); // 连接 // 消息订阅,同类方法 subxxx client.subQos0("/test/#", (topic, payload) -> { logger.info(topic + '\t' + ByteBufferUtil.toString(payload)); }); // 取消订阅 client.unSubscribe("/test/#"); // 发送消息 client.publish("/test/client", ByteBuffer.wrap("mica最牛皮".getBytes(StandardCharsets.UTF_8))); // 断开连接 client.disconnect(); // 重连 client.reconnect(); // 停止 client.stop();
// 注意:为了能接受更多链接(降低内存),请添加 jvm 参数 -Xss129k MqttServer mqttServer = MqttServer.create() // 默认:0.0.0.0 .ip("0.0.0.0") // 默认:1883 .port(1883) // 默认为: 8092(mqtt 默认最大消息大小),为了降低内存可以减小小此参数,如果消息过大 t-io 会尝试解析多次(建议根据实际业务情况而定) .readBufferSize(512) // 消息监听 .messageListener((context, clientId, message) -> { logger.info("clientId:{} message:{} payload:{}", clientId, message, ByteBufferUtil.toString(message.getPayload())); }) .debug() // 开启 t-io debug 信息日志 .start(); // 发送给某个客户端 mqttServer.publish("clientId","/test/123", ByteBuffer.wrap("mica最牛皮".getBytes())); // 发送给所有在线监听这个 topic 的客户端 mqttServer.publishAll("/test/123", ByteBuffer.wrap("mica最牛皮".getBytes())); // 停止服务 mqttServer.stop();
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。
为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。
Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。