一、该问题的重现步骤是什么?
1.
请求路径:https://${域名}/blade-broker/device/mqtt/publish
请求方式:POST
接口描述:向指定设备发送MQTT消息
2. 调用的参数{"productKey":"P63B0nIFxrsm","deviceName":"Device-AWRQ","topic":"/blade/sys/P63B0nIFxrsm/Device-AWRQ/thing/service/switch_off","payload":{"id":"6e5cdf69-d7aa-43d1-9daf-f15540e3ce4e","version":"1.0","method":"thing.service.switch_off","params":null}}
会响应只有一个code: 103
二、你期待的结果是什么?实际看到的又是什么?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
以下是bladex-boker容器内的报错
2025-05-09 15:32:38.506 ERROR 1 --- [ tio-worker-3] n.d.i.m.c.server.MqttServerAioListener : Mqtt server close clientId:Device-AWRQ, remark:读数据时发生异常: java.io.IOException isRemove:true error:Connection reset
2025-05-09 15:32:38.506 INFO 1 --- [ tio-worker-3] o.s.i.b.l.l.MqttConnectStatusListener : Mqtt clientId:Device-AWRQ username:Device-AWRQ&P63B0nIFxrsm offline reason:读数据时发生异常: java.io.IOException.
2025-05-09 15:32:38.506 INFO 1 --- [ tio-worker-3] org.tio.core.task.CloseRunnable : TioServerConfig [name=BladeX-Mqtt-Server], server:0.0.0.0:1883, client:61.142.114.74:12693 准备关闭连接, isNeedRemove:true, 读数据时发生异常: java.io.IOException
2025-05-09 15:32:38.506 INFO 1 --- [ tio-worker-3] org.tio.core.ChannelContext : 关闭前server:0.0.0.0:1883, client:61.142.114.74:12693, 关闭后server:0.0.0.0:1883, client:$UNKNOWN:9577
2025-05-09 15:32:38.958 INFO 1 --- [pool-4-thread-1] o.s.core.mp.plugins.SqlLogInterceptor :
五、若有更多详细信息,请在下面提供。
把请求地址的端口换成broker服务的端口试试呢
开一个设备模拟器,给模拟器发送http的指令看看接收到的topic是什么。
另外一个功能没跑通之前,建议直接在本地开发环境测试,测试成功了再到线上验证。如果没成功过就跑线上,那干扰的因素就太多了不好排查的。
设备模拟器在这里:
{ : , : , : , : }
调整后,响应值为演示环境暂时无法操作
现在调用接口显示演示环境暂时无法操作,确认配置无问题
用dev模式本地启动来测试
2025-05-14 11:49:03.365 WARN 55116 --- [imerTaskService] o.tio.server.task.ServerHeartbeatTask : BladeX-Mqtt-Server, 检查心跳, 共0个连接, 取锁耗时0ms, 循环耗时0ms, 心跳检测周期:120000ms, 心跳超时时间:90000ms
2025-05-14 11:49:14.226 WARN 55116 --- [ XNIO-1 task-2] o.s.c.secure.provider.ResponseProvider : 签名认证失败
================== Auth Start =================
BladeAuth : bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJibGFkZXguY24iLCJhdWQiOlsiYmxhZGV4Il0sInRva2VuX3R5cGUiOiJhY2Nlc3NfdG9rZW4iLCJjbGllbnRfaWQiOiJzYWJlcjMiLCJ0ZW5hbnRfaWQiOiIwMDAwMDAiLCJ1c2VyX2lkIjoiMTEyMzU5ODgyMTczODY3NTIwMSIsImRlcHRfaWQiOiIxMTIzNTk4ODEzNzM4Njc1MjAxIiwicG9zdF9pZCI6IjExMjM1OTg4MTc3Mzg2NzUyMDEiLCJyb2xlX2lkIjoiMTEyMzU5ODgxNjczODY3NTIwMSIsImFjY291bnQiOiJhZG1pbiIsInVzZXJfbmFtZSI6ImFkbWluIiwibmlja19uYW1lIjoi566h55CG5ZGYIiwicmVhbF9uYW1lIjoi566h55CG5ZGYIiwicm9sZV9uYW1lIjoiYWRtaW5pc3RyYXRvciIsImRldGFpbCI6eyJ0eXBlIjoid2ViIn0sImV4cCI6MTc0NzE5NzMyMywibmJmIjoxNzQ3MTkzNzIzfQ.npjJKC23kKlbYW1NOSuVO2iUZ0sAKhy3htSq_svP2sw
RequestURI : /blade-broker/device/mqtt/publish
RequestIP: 127.0.0.1
RequestParam: {"productKey":"P63B0nIFxrsm","deviceName":"Device-PBVR","topic":"/blade/sys/P63B0nIFxrsm/Device-PBVR/thing/service/set_light","payload":{"id":"c6289db6-4aa3-49f5-ab6f-edbcdab3c177","version":"1.0","method":"thing.service.set_light","params":{"input":{"brightness":4}}}}
================== Auth End =================
显示签名失败, 该token和证书可以调用server的接口
现在是请求未授权,本地启动的服务有看到请求进来
broker和server服务的sign-key要保持一致
看源码发现这边设置的直接返回false是因为这个吗
和这里无关,broker和server服务的sign-key要保持一致才行
看文档说明
扫一扫访问 Blade技术社区 移动端