通过FOREACH后将消息重发布,然后使用webhook,将消息直接存储到TDengine中,造成数据丢失

环境

  • EMQX 版本:5.0
  • 操作系统版本:centeros docker

重现此问题的步骤

  1. 通过FOREACH后将消息重发布,接收设备上报的数据里面有个数组,将数组里面的数据消息重发布,如果是3条数据,通过webhook直接插入到TDengine里面,就会丢一条,
  2. 通过FOREACH后将消息重发布,接收设备上报的数据里面有个数组,将数组里面的数据消息重发布,如果是3条数据,直接将这3条数据通过webhook,使用post请求,地址是我们自己的服务器,就能在服务器上接收到这3条数据
  3. 请问用webhook直接存到TDengine里面为什么会丢数据啊,因为我用的是开源的EMQX,请问是不支持用webhook直接插入到TDengine中吗

预期行为

实际行为

开源的你就用webhook 直接批量把数据存到TDengine就可以。
类似于这样:

当然5和4有点差别。但是原理/流程是一样的。不需要用for each把数据分成多条。直接批量。

能详细说一下吗?

请问是将数组里面的每一条数据,作为一个TDengine的子表,还是说直接将数据全部存入一个表啊?怎么实现直接批量啊?

https://docs.taosdata.com/assets/images/edit-action-15a55941fd29a45ee1e1dd61e28af321.webp
TDengine 的API都是HTTP API 你只要知道他的API是怎么拼的,你就能自己拼出来。你得自己研究一下。

这个insert插入一条数据,也可以往子表里面插入多次,我知道有这样的功能,但是我要插入的数据是数组,我也不清楚我这个数组里面具体是有多少个对象,然后把这些对象都要插入表里面,我不知道要怎么便利的,麻烦说的更加详细一点