外部订阅主体

您好,我这边使用emqx做了个公司内部的物联网平台,现在设备已经可以正常接入了,现在是需要接入一些外部系统,我们是想不让它们直接连入emqx,而是我们用http对外发布,这里我看EMQX的管理接口里面有找到topic发布的http接口功能,但是没找到同样的订阅topic功能,我试用如下接口又是会报错:
/api/v5/clients/msgserver_client2/subscribe
body:
{
“node”: “string”,
“topic”: “string”,
“clientid”: “msgserver_client2”,
“qos”: 0,
“nl”: 0,
“rap”: 0,
“rh”: 0
}
返回码:
{
“code”: “BAD_REQUEST”,
“message”: “{"kind":"validation_error","path":"root","reason":"unknown_fields","unknown":"clientid,node","unmatched":"none"}”
}
我目前怀疑是否是官网中对于此接口的入参出参没有更新呢?麻烦帮忙解答一下,谢谢

补充说明一下:我也没有在body中找到订阅回调的url等相关信息,不知道订阅后有消息时怎么返回?

订阅 API 的作用是代理客户端订阅,他需要有实际的客户端存在,所以他也并不提供完成的 MQTT 功能,你说的消息到达主动通知也不是 HTTP 能够做到的。

你如果需要通过 Web 端来连接、订阅、发布,可以尝试以 WebSocket 协议接入 MQTT。

其实也不算是web端来连接,因为我们是做的平台,外部是一些业务系统需要接入,那如果让他们直接接入MQTT的话比较不可控,所以我们才想对外发布http,websocket这种长链接方式应该也还是直接接入mqtt的。那这样我能想到的做法就是我们平台封装http对外发布topic订阅和发布的能力,我们平台要管理这些业务系统的所有topic及其对应的消息转发

但是走 HTTP 意味着外部的业务系统就没有订阅消费能力了

所以外部业务系统要注册回调url :grinning: