Fiware Orion Context Broker MQTT通知失效求助
排查Fiware Orion MQTT订阅通知丢失问题
1. 检查Docker网络连通性
- 确认Orion和Mosquitto容器在同一Docker网络中。执行
docker inspect orion-container-name和docker inspect mosquitto-container-name,查看NetworkSettings.Networks字段是否一致。 - 进入Orion容器内测试连通性:
docker exec -it orion-container-name /bin/sh,然后用telnet mosquitto-container-host 1883或nc -zv mosquitto-container-host 1883验证端口是否可达。
2. 核对MQTT订阅配置细节
- 检查订阅的
mqtt.topic是否和客户端订阅的主题完全匹配(大小写敏感)。 - 确认订阅里的
mqtt.host是Mosquitto容器的服务名或容器IP,别用localhost(容器内的localhost指向自身,不是宿主机)。 - 检查
mqtt.port是否是Mosquitto实际监听的端口,默认是1883,避免端口配置错误。
3. 查看日志定位问题
- 打开Orion的DEBUG日志:启动时加
-logLevel DEBUG参数,或者执行docker logs -f orion-container-name,看发送MQTT消息时有没有连接失败、认证错误这类提示。 - 查看Mosquitto日志:
docker logs -f mosquitto-container-name,检查是否有Orion的连接记录,有没有拒绝连接的情况(比如最近改了认证配置)。
4. 验证MQTT客户端与测试工具
- 确保客户端的MQTT版本和Orion、Mosquitto兼容(Orion默认支持3.1.1版本)。
- 用
mosquitto_sub直接连Mosquitto测试:
然后触发实体PATCH操作,看能不能收到消息,排除客户端自身问题。mosquitto_sub -h localhost -p 1883 -t "你的目标主题"
5. 检查版本兼容性
- 确认最近有没有升级过Orion或Mosquitto,部分版本更新可能带来MQTT交互的兼容问题,试试回滚到之前正常工作的版本验证。
6. 排查订阅过滤规则
- 检查订阅的
entities和attrs过滤条件是不是太严格,比如只订阅了特定属性,但PATCH的是未包含的属性,导致没触发通知。 - 确认
notifyConditions配置正确,比如type设为ONCHANGE时,指定的属性确实发生了变更。
内容的提问来源于stack exchange,提问作者guyd
相关产品推荐
相关产品推荐

