EMQ5.0.11规则引擎监听上线消息

错误报告

环境

  • EMQX 版本:EMQ5.0.11
  • 操作系统版本:centos 7.6

重现此问题的步骤

使用规则引擎监听上线事件通过webhook发送上线消息到webserver,server端掉用http api去帮连接订阅相关topic,此时会报{“code”: “RESOURCE_NOT_FOUND”, “reason”: “Client id not found”},但是延迟一段时间后可正常订阅,4.x版本进行该操作时不会有问题,想问下是不是哪里还需要配置的?

你看下订阅成功后连接是不是断开了?

订阅成功后连接也没有断开,客户端有挂住的;主要是延迟一段时间后调api可以订阅成功,接收到规则引擎的数据立马调就会报clientid不存在;感觉像是立马掉用连接还没真正建立起来


通过规则引擎触发的日志

我看后面的日志里面订阅成功了呀?

这个订阅是客户端订阅的,通过api订阅的都没在上面显示出来,


报了clientid找不到的错误


通过api订阅成功是这些topic

我这边没复现出这个问题诶,你是测试环境吗?是的话可以直接开个 debug 日志看看。

你部署的是集群还是单节点?

部署的单节点,现在开的就是debug日志,但是没看到更http请求的报错

你运行一下 emqx remote_console,进入远程控制台以后,执行一下这几句命令:

dbg:tracer().
dbg:p(all, c).
dbg:tpl(emqx_mgmt, subscribe, cx).

然后再让客户端连接订阅,最后看下日志。

结束以后,执行以下命令停止 debug:

dbg:stop().

命令

emq日志

http api

好像没看到什么不一样的

我怎么感觉你的 HTTP 请求都没到这个节点上?

正常应该会有这种日志的:

call emqx_mgmt:subscribe(<<"abc">>,[{<<"test">>,#{nl => 0,qos => 0,rap => 0,rh => 0}}])


这个是我直接向http server监听的端口发送请求可以看到;

通过规则引擎发送过去的数据就显示不出来日志

你直接向 Web Server 发数据的时候,EMQX 这边没有日志,Web Server 那边是什么现象?有触发订阅操作吗?API 响应是什么?

1.直接向web server发送请求能正常订阅,返回就是订阅的topic数组,EMQ这边也是有日志的;
2.通过规则引擎发数据,返回就报错{“code”: “RESOURCE_NOT_FOUND”, “reason”: “Client id not found”},同时EMQ这边也看不到任何日志;
3.我在webserver中做一个延迟(延迟10秒)让规则引擎那边触发超时重发,这时候也是能订阅成功的

你订阅请求的是哪个接口?

18083端口

我的意思是哪个 API

不好意思看错了,api/v5/clients/gtjaTest2/subscribe/bulk,调用的是批量订阅的接口

我刚确认了一下,这确实是一个 Bug,你调用 /subscribe 接口应该是没有问题的。

Bug 我已经反馈至研发团队,我们会尽快修复。