webhook 请求失败(第一个规则命中能够成功,之后的全部失败)

环境信息

  • EMQ X 版本:4.3.5
  • 操作系统及版本:debian 10.10
  • 其他

问题描述

API套了腾讯的CDN,同时查阅CDN的日志没有发现拒绝的项目。

多次尝试了一下,发现在新建好规则后的一定时间内是可以的,过一段时间后就出现了timeout。
在容器中ping域名和使用curl调用api,都是可以正常工作的。

请问是哪里设置有问题吗?

emqx-broker    | 2021-07-23T07:55:28.967104+00:00 [debug] mqtt-explorer-7b9c496d@***:57493 [MQTT] RECV <<48,123,0,27,101,115,112,47,104,53,48,52,48,47,99,99,53,48,101,...>>
emqx-broker    | 2021-07-23T07:55:28.967245+00:00 [debug] mqtt-explorer-7b9c496d@***:57493 [MQTT] RECV PUBLISH(Q0, R0, D0, Topic=***, PacketId=undefined, Payload=<<"{\n  \"sn\": \"5264\",\n  \"rawdata\": \"526E57AT6U5F\",\n  \"temperature\": \"50.3\",\n  \"humidity\": \"52.3\"\n}">>)
emqx-broker    | 2021-07-23T07:55:28.967440+00:00 [info] mqtt-explorer-7b9c496d@***:57493 PUBLISH to ***: <<"{\n  \"sn\": \"5264\",\n  \"rawdata\": \"526E57AT6U5F\",\n  \"temperature\": \"50.3\",\n  \"h"...>>
emqx-broker    | [inspect]
emqx-broker    |        Selected Data: #{<<"p">> =>
emqx-broker    |                              <<"{\n  \"sn\": \"5264\",\n  \"rawdata\": \"526E57AT6U5F\",\n  \"temperature\": \"50.3\",\n  \"humidity\": \"52.3\"\n}">>}
emqx-broker    |        Envs: #{'__bindings__' =>
emqx-broker    |                     #{'Id' => <<"inspect_1627026923247171779">>,
emqx-broker    |                       'Params' => #{}},
emqx-broker    |                 clientid => <<"mqtt-explorer-7b9c496d">>,
emqx-broker    |                 event => 'message.publish',
emqx-broker    |                 flags => #{dup => false,retain => false},
emqx-broker    |                 headers =>
emqx-broker    |                     #{peerhost => <<"***">>,properties => #{},
emqx-broker    |                       proto_ver => 4,protocol => mqtt,
emqx-broker    |                       username => <<"***">>},
emqx-broker    |                 id => <<"0005C7C5BA241F0BD2FB00000844002F">>,
emqx-broker    |                 metadata => #{rule_id => <<"rule:759356">>},
emqx-broker    |                 node => 'ad49cf2f7d51@172.17.0.2',
emqx-broker    |                 payload =>
emqx-broker    |                     <<"{\n  \"sn\": \"5264\",\n  \"rawdata\": \"526E57AT6U5F\",\n  \"temperature\": \"50.3\",\n  \"humidity\": \"52.3\"\n}">>,
emqx-broker    |                 peerhost => <<"***">>,pub_props => #{},
emqx-broker    |                 publish_received_at => 1627026928967,qos => 0,
emqx-broker    |                 timestamp => 1627026928967,
emqx-broker    |                 topic => <<"***">>,
emqx-broker    |                 username => <<"***">>}
emqx-broker    |        Action Init Params: #{}
emqx-broker    | 2021-07-23T07:55:34.968648+00:00 [error] mqtt-explorer-7b9c496d@223.128.81.185:57493 [WebHook Action] HTTP request error: timeout
emqx-broker    | 2021-07-23T07:55:34.969347+00:00 [debug] ***@***:58945 [MQTT] SEND PUBLISH(Q0, R0, D0, Topic=***, PacketId=undefined, Payload=<<"{\n  \"sn\": \"5264\",\n  \"rawdata\": \"526E57AT6U5F\",\n  \"temperature\": \"50.3\",\n  \"humidity\": \"52.3\"\n}">>)

发送失败的日志

配置项

一段时间之后资源里的状态还处于可用状态吗?是不是网络问题,延长超时时间试试。

显示的是可用,延长超时时间会使能够工作的时间变长,但还是会出现timeout,此时在docker内用curl是能够访问的,应该不是网络问题。

docker内curl是指你的emqx搭建在docker上?

对的,emqx运行在docker内。

因当是CDN的问题,换了又拍云的CDN,目前没有问题了。