云筑文档(建模端)
简介
概述
工程树目录说明
项目管理
升级管理
环境升级
运维部署
平台版本升级
系统管理
查询用户
职级管理
岗位管理
编制管理
机构管理
菜单管理
权限反查
权限分配
权限修改
任务管理
APP升级
多语言导入导出
入门教程
APP入门教程
本地开发
安装与初始化项目
系统设置
建模端设置
切断后端服务
项目默认配置
数据库
创建数据源
创建表
桌面开发
数据集
数据集基本用法
ES数据集
模板
标准查询模板
视图(数据组件)
数据工具条
表单
横向查询
条件面板
网格
分页
下推数据
树控件
后端数据加载进度条
统计分析
导入
导出
视图(布局)
综合布局
浮动布局
模型
功能
独立型功能
逻辑流
流程
流程
自定义流程
作业调度
PC自定义错误页
APP开发
平台配置
引入第三方图标
即时通讯
音视频通话
组件(表单)
组件(数据)
手机页面数据集
九宫格
列表&列表头部
流程栏
搜索栏
下推数据
数据筛选
广告栏
跑马灯
打包
后台开发
用户
获取用户详情
用户解锁方案
支付
微信PC扫码支付
支付宝PC扫码支付
微信APP支付
微信退款
支付宝APP支付
微信小程序支付
支付宝退款
接口访问(第三方对接)
第三方访问EAP5
EAP5访问第三方
生成访问第三方令牌
接口访问(接口签名)
项目默认配置
客户端携带签名
单点登录
获取票据
远程登录
项目配置
获取用户信息
生成令牌访问EAP5
EAP5访问第三方系统
单点自查
系统管理
机构路径注册
用户管理
新增用户
修改用户
删除用户
批量新增用户
查询用户
岗位管理
新增岗位
修改岗位
删除岗位
查询岗位
职级管理
新增职级
修改职级
删除职级
查询职级
机构管理
新增机构
修改机构
删除机构
查询机构
工具类
HTTP请求工具类
自定义事件(登录)
项目配置
登录Groovy模板
自定义事件(注册)
项 目配置
注册Groovy模板
自定义事件(用户导入)
项目配置
Groovy模板
自定义事件(用户增删改)
项目配置
Groovy模板
自定义事件(机构管理)
项目配置
Groovy模板
自定义事件(岗位管理)
项目配置
Groovy模板
MQTT
MQTT 须知
MQTT项目配置
MQTT -Groovy模板
日志中心
新增数据
流程
属性说明
短信通知
消息队列通知
自动流转实现
报表配置
打印配置
本文档使用 MrDoc 发布
-
+
首页
MQTT -Groovy模板
## MQTT Groovy模板 ```groovy package eap5csxm.XiaoXiZhongXin.MQTT.groovy import com.zhc.eap.config.mqtt.EapMqttConfig import com.zhc.eap.config.mqtt.MqttGroovyConfig import com.zhc.eap.config.mqtt.MqttItemConfig import com.zhc.eap.config.mqtt.MqttSubConfig import com.zhc.eap.config.mqtt.MqttTopicConfig import com.zhc.eap.utils.MqttUtil import org.slf4j.Logger import org.slf4j.LoggerFactory import com.zhc.eap.mqtt.MqttContext; import com.zhc.eap.exception.MqttRtException; /** * MQTT消息订阅 * * @author hzl * @date 2023-07-07 */ class MQTT { private Logger logger = LoggerFactory.getLogger("MQTT.groovy") //logger.info("日志信息"); 输日志 //com.zhc.eap.util.ExceptionUtil.throwMessage(entityCo.get("controlDesc")); 抛异常 //event-placeholder /** * 初始化 * @param mqttContext 上下文 * @throws Exception */ public void initializer(MqttContext mqttContext) throws Exception { //调用后端初始化环境及订阅 MqttUtil.initializer(getSubMqttConfig()); //初始化发布客户端 MqttUtil.createMqttClient(getPubMqttConfig(),true); } /** * 重新加载(一般用来动态实时订阅) * @throws Exception */ public void reload(MqttContext context) { //获取mqtt订阅配置(可以与初始化的配置一样,也可以单独只处理新的主题订阅) MqttItemConfig mqttConfig = getSubMqttConfig(); //调用后端动态实时加载订阅主题 MqttUtil.reload(mqttConfig); } /** * 消费 * @param mqttContext 上下文 * @throws Exception */ public void consume(MqttContext mqttContext) throws Exception { //获取发布配置 //EapMqttConfig mqttConfig = getPubMqttConfig(); //长连接发布 //MqttUtil.publish(mqttConfig, "donge"); //一次发布 //MqttUtil.oncePublish(mqttConfig, "donge"); //获取客户端对象 //MqttClient client = mqttContext.getClient() //获取当前订阅的主题 //String topic = mqttContext.getTopic(); //获取当前主题配置 //MqttTopicConfig topicConfig = mqttContext.getTopicConfig(); //mqtt消息对象(官方对象) //MqttMessage message = mqttContext.getMessage() //获取消息字符串 //String msg = mqttContext.getMsg() //获取消息字节数组(有些场景不需要转string,会乱码) //byte[] payload = mqttContext.getPayload(); //处理你的业务逻辑,这里示例抛异常验证是否订阅成功 throw new MqttRtException(mqttContext.getMsg()); } /** * 获取mqtt配置 * @return */ private MqttItemConfig getSubMqttConfig() { //连接配置 MqttItemConfig mqttConfig = new MqttItemConfig(); //客户端ID(确保唯一,否则会被踢出) mqttConfig.setClientId("mqtt1"); mqttConfig.setHost("tcp://192.168.4.106:1883"); mqttConfig.setUserName("xxx"); mqttConfig.setPassword("xxx"); //设置连接超时 mqttConfig.setTimeOut(30); //设置会话心跳时间单位为秒,服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制 mqttConfig.setKeepAlive(60); // 是否清空session // 设置为false表示服务器会保留客户端的连接记录(订阅主题,qos),客户端重连之后能获取到服务器在客户端断开连接期间推送的消息 // 设置为true表示每次连接到服务端都是以新的身份 mqttConfig.setCleanSession(false); //设置自动重连 mqttConfig.setAutomaticReconnect(true); //回调groovy配置 MqttGroovyConfig groovy = new MqttGroovyConfig(); groovy.setProjectName("eap5csxm"); groovy.setDevGroup("admin"); groovy.setPath("eap5csxm/XiaoXiZhongXin/MQTT/groovy/MQTT.groovy"); groovy.setMethod("consume"); //订阅配置 MqttSubConfig subConfig = new MqttSubConfig(); /** * 0:至多一次,客户机将在发布消息的同时废弃此消息。会发生消息丢失。 这一级别可用于如下情况,如环境传感器数据, * 这种情况下,丢失一次读记录无所谓,因为第二个 数据的发布紧跟其后 * 1:至少一次,确保消息到达,但可能发生消息重复。(那么此消息为持久消息) * 2:只有一次,利用四次握手进行确认,网络延迟可能会增加(那么此消息为持久消息) */ subConfig.setQos(0); subConfig.setGroovy(groovy); //主题配置 MqttTopicConfig topicConfig1 = new MqttTopicConfig(); topicConfig1.setTopic("/donge/1"); topicConfig1.setSubscribe(subConfig); MqttTopicConfig topicConfig2 = new MqttTopicConfig(); topicConfig2.setTopic("/donge/2"); topicConfig2.setSubscribe(subConfig); MqttTopicConfig topicConfig3 = new MqttTopicConfig(); topicConfig3.setTopic("/donge/3"); topicConfig3.setSubscribe(subConfig); MqttTopicConfig topicConfig4 = new MqttTopicConfig(); topicConfig4.setTopic("/donge/4"); topicConfig4.setSubscribe(subConfig); //添加到订阅主题列表 //!!!!!!!!!!!!!!!!!!!!! //这里动态添加主题主题,然后手动调用reload接口,实时订阅 //!!!!!!!!!!!!!!!!!!!!! List<MqttTopicConfig> topics = new ArrayList<>(); topics.add(topicConfig1); topics.add(topicConfig2); //topics.add(topicConfig3); //topics.add(topicConfig4); mqttConfig.setTopics(topics); return mqttConfig; } /** * 获取mqtt发布配置 * @return */ private EapMqttConfig getPubMqttConfig() { //连接配置 EapMqttConfig mqttConfig = new EapMqttConfig(); mqttConfig.setClientId("mqtt-pub"); mqttConfig.setHost("tcp://192.168.4.106:1883"); mqttConfig.setUserName("xxx"); mqttConfig.setPassword("xxx"); mqttConfig.setTimeOut(30); mqttConfig.setKeepAlive(60); mqttConfig.setCleanSession(false); mqttConfig.setAutomaticReconnect(true); //发布回调groovy配置 //MqttPubGroovyConfig groovy = new MqttPubGroovyConfig(); //groovy.setProjectName("eap5csxm"); //groovy.setDevGroup("admin"); //groovy.setPath("eap5csxm/XiaoXiZhongXin/MQTT/groovy/MQTT.groovy"); //groovy.setSuccMethod("publishSucc"); //groovy.setFailMethod("publishFail"); //发布配置 //MqttPubConfig pubConfig = new MqttPubConfig(); /** * 0:至多一次,客户机将在发布消息的同时废弃此消息。会发生消息丢失。 这一级别可用于如下情况,如环境传感器数据, * 这种情况下,丢失一次读记录无所谓,因为第二个 数据的发布紧跟其后 * 1:至少一次,确保消息到达,但可能发生消息重复。(那么此消息为持久消息) * 2:只有一次,利用四次握手进行确认,网络延迟可能会增加(那么此消息为持久消息) */ //pubConfig.setQos(2); /** * 保留消息定义: Broker会存储每个Topic的最后一条保留消息及其Qos,当订阅该Topic的客户端上线后,Broker需要将该消息投递给它 * 保留消息作用: 可以让新订阅的客户端得到发布方的最新的状态值,而不必要等待发送 * 缺点:因为会保留最后一条信息,导致消费端每次登入都会重复收到最后一条记录信息 */ //pubConfig.setRetained(false); //pubConfig.setGroovy(groovy); //主题配置 //MqttTopicConfig topicConfig = new MqttTopicConfig(); //topicConfig.setTopic("/a/b/3"); //topicConfig.setPublish(pubConfig); //添加发布主题配置 //mqttConfig.setTopicConfig(topicConfig); return mqttConfig; } /** * 发布成功 * @param mqttContext 上下文 * @throws Exception */ public void publishSucc(MqttContext mqttContext) throws Exception { } /** * 发布失败 * @param mqttContext 上下文 * @throws Exception */ public void publishFail(MqttContext mqttContext) throws Exception { } } ```
admin
2024年5月7日 16:12
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
鲲鹭文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果鲲鹭文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护鲲鹭文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码