最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

在nodejs中创建重复事件以更新或插入MySQL表

IT培训 admin 3浏览 0评论

在nodejs中创建重复事件以更新或插入MySQL表

我有一个MySQL表任务。在任务中,我们可以创建正常任务或重复任务,该任务将在MySQL任务表中自动创建新任务,并向用户发送已创建任务的电子邮件通知。经过大量的研究,我发现你可以用四种方法做到这一点

  1. MySQL事件
  2. 蛋糕,公牛,议程(node.js调度库)
  3. 使用cron作业来监视每天的任务

重复的任务将每周,每天,每月和每年重复。我们必须随时选择删除定期事件。什么是一个美好而干净的解决方案?

回答如下:

正如你已经确定的那样,有很多方法可以解决这个问题,这就是我将如何做到这一点,但我做了一些假设,例如你可能有多少任务以及系统前进的灵活性。

如果您不太可能更改任务时间选项(每日,每周,每月,每年)。每个任务都有以下字段last_run_datenext_run_date。每次运行任务时,我都会更新这些字段并在日志表中创建一个条目,例如task_run_log,它还将存储运行任务的日期/时间。

然后我会有一个cron作业,它会向nodejs服务发出HTTP消息。此Web服务将查看任务表,查找当天需要执行的任务,并将每个任务的消息分派到某种队列(AWS SQS,GCP Pub / Sub,Apache Kafka等)。队列中的每条消息都代表一个需要执行的任务,工作人员可以订阅此队列并自行处理任务。一旦工人处理了一个工作,它就会生成日志条目并更新last_run_datenext_run_date字段。如果任务失败,它将添加它以将该消息移动到错误队列中,并将在任务日志中记录失败的任务。

此系统将是健壮的,因为任何失败的作业将作为数据库中的失败作业存在并且将出现在错误队列中(您可以将其排除以删除失败的作业,或者可以在工作程序修复时将它们重放到正常队列中)。它还可以扩展到每天必须发生的许多任务,因为您可以扩展您的工作人员。您也不会淹没cron,您的cron作业每天只会向您的HTTP服务发送一个HTTP请求,从而启动处理。

您还可以根据cron作业是否运行来设置警报,以确保正确启动该过程。

在nodejs中创建重复事件以更新或插入MySQL表

我有一个MySQL表任务。在任务中,我们可以创建正常任务或重复任务,该任务将在MySQL任务表中自动创建新任务,并向用户发送已创建任务的电子邮件通知。经过大量的研究,我发现你可以用四种方法做到这一点

  1. MySQL事件
  2. 蛋糕,公牛,议程(node.js调度库)
  3. 使用cron作业来监视每天的任务

重复的任务将每周,每天,每月和每年重复。我们必须随时选择删除定期事件。什么是一个美好而干净的解决方案?

回答如下:

正如你已经确定的那样,有很多方法可以解决这个问题,这就是我将如何做到这一点,但我做了一些假设,例如你可能有多少任务以及系统前进的灵活性。

如果您不太可能更改任务时间选项(每日,每周,每月,每年)。每个任务都有以下字段last_run_datenext_run_date。每次运行任务时,我都会更新这些字段并在日志表中创建一个条目,例如task_run_log,它还将存储运行任务的日期/时间。

然后我会有一个cron作业,它会向nodejs服务发出HTTP消息。此Web服务将查看任务表,查找当天需要执行的任务,并将每个任务的消息分派到某种队列(AWS SQS,GCP Pub / Sub,Apache Kafka等)。队列中的每条消息都代表一个需要执行的任务,工作人员可以订阅此队列并自行处理任务。一旦工人处理了一个工作,它就会生成日志条目并更新last_run_datenext_run_date字段。如果任务失败,它将添加它以将该消息移动到错误队列中,并将在任务日志中记录失败的任务。

此系统将是健壮的,因为任何失败的作业将作为数据库中的失败作业存在并且将出现在错误队列中(您可以将其排除以删除失败的作业,或者可以在工作程序修复时将它们重放到正常队列中)。它还可以扩展到每天必须发生的许多任务,因为您可以扩展您的工作人员。您也不会淹没cron,您的cron作业每天只会向您的HTTP服务发送一个HTTP请求,从而启动处理。

您还可以根据cron作业是否运行来设置警报,以确保正确启动该过程。

发布评论

评论列表 (0)

  1. 暂无评论