如何在NodeJS中以正确的顺序传递消息?

编程入门 行业动态 更新时间:2024-10-09 21:18:46

如何在NodeJS<a href=https://www.elefans.com/category/jswz/34/1760034.html style=中以正确的顺序传递消息?"/>

如何在NodeJS中以正确的顺序传递消息?

我已部署了节点服务器,其工作是更新IOT设备的连接状态数据库

问题

  • 由于NodeJS是异步执行的,并且是单线程的,所以我们假设我同时收到DisconnectedConnected之类的状态。
  • 有时发生的是由于NodeJS异步,Connected首先被处理,Disconnected接下来被处理。
  • 这使我的数据库处于不一致状态。

想要结果

  • 我想按源头发生的顺序更新数据库(即根据时间戳)

因此,如果NodeJS是单线程的并且每个请求彼此之间不共享任何内存,我该如何实现?

回答如下:

我建议,与其保持“连接”状态布尔字段连续不断地更新潜在的乱序数据,不如保持连接状态的叙述。

例如:

|----------------------|------------------|------------------|
|      Timestamp       |   IoT DeviceID   |  Connected       |
|----------------------|------------------|------------------|
| 2020-05-01T10:05:00Z |       1234       |  True            |
|----------------------|------------------|------------------|
| 2020-05-01T10:00:00Z |       1234       |  False           |
|----------------------|------------------|------------------|
| 2020-05-01T08:45:00Z |       1234       |  True            |
|----------------------|------------------|------------------|

要获得当前的连接状态,您只需按设备ID进行查询,并按时间戳进行排序。

这样,连接/断开事件的顺序无关紧要。只要您相信时间戳记,查询时连接状态就将是准确的。

查询可能类似于:

select timestamp, device_id, connected from connection_status order by timestamp desc limit 1;

这样做的好处是,您还具有用于故障排除目的的连接诊断数据。这可能非常有用!

当然,您最终需要清除数据,但是例如,可以通过删除任何早于1个月的数据来进行清除。

更多推荐

如何在NodeJS中以正确的顺序传递消息?

本文发布于:2024-05-07 12:20:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756219.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中以   顺序   正确   消息   如何在

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!