rabbitmq 如何构建作业调度程序

bcs8qyzn  于 2023-01-20  发布在  RabbitMQ
关注(0)|答案(1)|浏览(153)

我正在构建一个作业调度程序,我在两种方法之间左右为难。我有两种类型的作业,一种是在特定日期调度的,另一种是每小时运行的。对于特定日期的作业,我轮询存储作业的数据库表,并将结果发布到rabbitmq消息代理,由特定的工作者处理它们,这对于发送提醒通知或电子邮件等定义更明确的任务非常有效。对于每小时一次的作业,我有一个基于cron表达式的作业正在运行,并且在函数中直接有逻辑,所以它不会进入队列。通常,这些作业是清理我的数据库或根据前一天的活动设置某些值等。
我想知道架构它的最佳方式是什么。让所有这些较小的作业作为微服务以一定的节奏运行并侦听队列是否有意义?我是否应该将它们全部组合到一个服务中?我是否应该将两种类型的所有逻辑组合到一个大型工作者应用中?

zy1mlcev

zy1mlcev1#

在我看来,正如所描述的,你有两个不同的系统在做两件不同的事情,这是一个问题。
例如,考虑发送一封电子邮件,按照你现在的设计,你必须写两次你的电子邮件代码--一次用于发送到队列的消息,一次用于从cron发送的消息。
理想情况下,您希望在设计中尽可能容易地支持系统。例如,如果您的设计使用队列,那么所有操作都应该以相同的方式工作--从队列中获取命令消息和参数并执行它们。您的cron作业和调度程序都将向队列添加消息。支持新操作只意味着编码一次,然后两个系统都可以向队列添加消息。
数据模型也应该如此,数据模型应该支持这两种类型的调度,但要尽可能多地共享。

相关问题