modify mqtt 根主题问题

This commit is contained in:
2026-08-10 10:44:52 +08:00
parent 1d768298e4
commit e9e029deaf
3 changed files with 15 additions and 13 deletions
+6 -5
View File
@@ -283,15 +283,16 @@ async def create_workers(session, config, count=1, worker_manager=None):
int_mqtt_enabled = int_mqtt_cfg.get("enabled", False) int_mqtt_enabled = int_mqtt_cfg.get("enabled", False)
int_mqtt_client = None int_mqtt_client = None
# 内部请求-响应主题(edge_app_controller 的 alg_media_fetch 命令使用)。 # 内部请求-响应主题(edge_app_controller 的 alg_media_fetch 命令使用)。
# 注意:勿用 chongming/{插件}/{操作} 保留命名空间——网关 MQTT Bridge 订阅了 # 与盒子侧约定一致(盒子只设根主题 box,子路径固定 aibox_sophon/...);
# chongming/+/+,会拦截该命名空间并按 Worker RPC 路由,而 edge_app_controller # 勿用 chongming/{插件}/{操作} 保留命名空间——网关 MQTT Bridge 订阅了
# chongming/+/+,会拦截 3 级主题并按 Worker RPC 路由,而 edge_app_controller
# 不是 @rpc_method(Worker 无对应 Queryable),导致 worker_manager 报 # 不是 @rpc_method(Worker 无对应 Queryable),导致 worker_manager 报
# "Worker ... 无回复,尝试重试"。请与对端应用(设备)约定一致的主题。 # "Worker ... 无回复,尝试重试"。
int_req_topic = int_mqtt_cfg.get( int_req_topic = int_mqtt_cfg.get(
"request_topic", "/internal/aibox_sophon_adapter/edge_app_controller" "request_topic", "box/aibox_sophon/edge_app_controller"
) )
int_resp_topic = int_mqtt_cfg.get( int_resp_topic = int_mqtt_cfg.get(
"response_topic", "/internal/aibox_sophon_adapter/edge_app_controller_reply" "response_topic", "box/aibox_sophon/edge_app_controller_reply"
) )
if int_mqtt_enabled: if int_mqtt_enabled:
from chongming_mqtt.internal_mqtt import InternalMQTTClient from chongming_mqtt.internal_mqtt import InternalMQTTClient
+5 -5
View File
@@ -146,11 +146,11 @@ async def _cmd_alg_media_fetch(payload: dict) -> dict | None:
print(f"[alg_media_fetch]Board {board_id} not found in database.") print(f"[alg_media_fetch]Board {board_id} not found in database.")
return _reply(-4, f"设备 {board_id} 不在数据库中") return _reply(-4, f"设备 {board_id} 不在数据库中")
# 内部请求-响应主题:勿用 chongming/{插件}/{操作} 保留命名空间。 # 内部请求-响应主题由 [workers.config.internal_mqtt] 配置,与盒子侧约定一致
# 网关 MQTT Bridge 订阅了 chongming/+/+,会拦截该命名空间并按 Worker RPC # (盒子只设根主题 box,子路径固定 aibox_sophon/...,回复主题固定为 ..._reply)。
# 路由,而 edge_app_controller 不是 @rpc_method(Worker 无对应 Queryable), # 勿用 chongming/{插件}/{操作}:网关 Bridge 订阅 chongming/+/+,会拦截
# 会导致 worker_manager 报 "Worker ... 无回复,尝试重试"。 # 3 级主题并按 Worker RPC 路由,而 edge_app_controller 不是 @rpc_method
# 主题由 [workers.config.internal_mqtt] 配置,需与对端应用(设备)约定一致。 # (Worker 无对应 Queryable),会导致 worker_manager 报 "无回复"。
resp = await internal_mqtt.request( resp = await internal_mqtt.request(
request_topic=internal_request_topic, request_topic=internal_request_topic,
response_topic=internal_response_topic, response_topic=internal_response_topic,
+4 -3
View File
@@ -31,9 +31,10 @@ mqtt_subscribe: "MQTTSubscribeClient | None" = None
internal_mqtt: "InternalMQTTClient | None" = None internal_mqtt: "InternalMQTTClient | None" = None
# 内部请求-响应主题(edge_app_controller 的 alg_media_fetch 命令使用) # 内部请求-响应主题(edge_app_controller 的 alg_media_fetch 命令使用)
# 注意:勿用 chongming/{插件}/{操作} 保留命名空间(网关 Bridge 会拦截并按 Worker RPC 路由) # 与盒子侧约定一致(盒子只设根主题 box,子路径固定 aibox_sophon/...);
internal_request_topic: str = "/internal/aibox_sophon_adapter/edge_app_controller" # 勿用 chongming/{插件}/{操作} 保留命名空间(网关 Bridge 订阅 chongming/+/+ 会拦截 3 级主题并按 Worker RPC 路由)
internal_response_topic: str = "/internal/aibox_sophon_adapter/edge_app_controller_reply" internal_request_topic: str = "box/aibox_sophon/edge_app_controller"
internal_response_topic: str = "box/aibox_sophon/edge_app_controller_reply"
# 上传文件根目录(用于清理告警关联视频) # 上传文件根目录(用于清理告警关联视频)
upload_root: str = "./data/uploads" upload_root: str = "./data/uploads"