一、该问题的重现步骤是什么?
1. 生成客户端mqtt连接参数
2.
3.
二、你期待的结果是什么?实际看到的又是什么?
1、生成mqtt连接信息参数不限制5分钟有效
2、生成的设备topic匹配兼容问题
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
bladex-iot, 最新版本,windows
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
1、我想生成一个永久设备连接信息提供到生产环境的设备使用,自定义一个函数
2、生成之后信息,不带时间戳,
3、但是我通过客户端连接之后,这个检验不符合我这个情况
4、传过来的参数为null, 时间戳变量是long,所以赋值了0,然后下面判断时间戳小于等于0就会抛出错误,好像我这种情况我需要怎么做,???因为生产设备确实需要不会过期的连接信息;
5、还有系统topic规则能修改吗?因为设备之前用的阿里的,不带/blade, 如果转换你们系统的,带了/balde, 导致topic匹配不通过。我旧设备也无法更改,想新旧设备都兼容,有什么办法解决???
用这个生成clienttype如果为device就不会去校验时间串,认证逻辑可以看这里:https://iot.bladex.cn/feature/link/intro.html#%E4%B8%80%E3%80%81mqtt%E8%BF%9E%E6%8E%A5%E8%AE%A4%E8%AF%81
/**
* 创建客户端认证信息
*
* @return ClientSign
*/
private ClientSign createClientSign() {
ClientIdInfo clientIdInfo = new ClientIdInfo();
clientIdInfo.setClientId(deviceName);
ClientSign clientSign = new ClientSign();
clientSign.setClientIdInfo(clientIdInfo);
clientSign.setProductKey(productKey);
clientSign.setDeviceName(deviceName);
clientSign.setDeviceSecret(deviceSecret);
return clientSign;
}
topic和协议不同的情况,可以用协议转换模块:https://iot.bladex.cn/feature/protocol/protocol.html
如果目前的功能不满足需求,只能去修改源码了,源码的入口在这里:https://center.javablade.com/blade/BladeX-Links/src/commit/1d95b7a06841269f3ab33824ec349a1703f6fd1c/blade-service/blade-broker/src/main/java/org/springblade/mqtt/broker/data/listener/BladeMqttFunctionMessageListener.java
1、你好第一个问题解决了。协议转换那里不太明白; 我修改了,不生效;
2、我生成是这个格式/sys/ghhswCj6NQh/062255223270004/thing/event/property/post,协议那里怎么配置,不太看的明白
这是我的配置,哪里错了吗?
协议转换需要配置的有点多,得每一个topic的具体路径和参数都得配置才能行,感觉还是直接改源码逻辑比较好实现一点。比如直接判断传过来的topic取消/blade前缀后是否匹配,如果匹配则进入逻辑。
具体逻辑在这里控制判断
还可以使用协议转换功能。先添加一个 阿里的 协议,然后添加协议规则,产品改一下使用这个协议(或者重新建一个),只需要 topic 做下规则 body 消息体是兼容的,直接 ${body}
扫一扫访问 Blade技术社区 移动端