node.js - 为大型用户群运行脚本的最佳方式?
问题描述
我有用户存储在 postgresql 数据库(~10 M)中,我想向他们发送所有电子邮件。目前我已经编写了一个nodejs脚本,它基本上一次获取1000个用户(sql中的偏移和限制)并在rabbit MQ中对请求进行排队。现在这对我来说似乎很笨拙,好像节点进程在任何时候都失败了,我必须重新启动进程(我目前正在跟踪每个查询跳过的用户数,并且可以从日志中找到的前一个跳过的数字重新启动)。这可能会导致一些用户收到重复的电子邮件,而另一些用户则没有收到任何电子邮件。我可以创建一个新表,其中包含指示电子邮件是否已发送给该人的新列,但在我目前的情况下,我不能这样做。我既不能创建新表,也不能向现有表添加新行。(在我看来像幂等问题?)。你会如何处理这个问题?您认为复合索引可能会有所帮助吗?请解释。
解决方案
处理这个问题的最好方法确实是存储谁收到了一封电子邮件,所以没有机会做两次。
如果您无法将表或列添加到现有数据库,只需为此目的创建一个新数据库。如果您希望能够从崩溃中恢复,您需要将收到电子邮件的人存储在某处,因此如果您受到严格限制,不能将其存储在主数据库中,请使用另一种存储机制来发挥创意。
推荐阅读
- botframework - MS Teams - 获取安装机器人的团队 ID 和频道 ID
- javascript - 由 graphQL 填充的延迟加载组件
- java - 我对此特定代码的输出有疑问
- r - 如何使用随机效应模型为 Cox 编码具有三个级别的分类变量?
- wordpress - Sucuri 提醒 WordPress 帖子已被未经授权的一方更新
- c# - 带有字典的默认值属性
- javafx - 造型 JFoenix Tabpane
- c++ - 链接到 Linux 上的 C++ 静态库会在构建可执行文件时引发链接器错误
- postgresql - 如何在 postgres 上禁用 replication_slot
- c# - 我如何在额外的线程中运行类代码?