我目前正在构建一个向用户发送交易电子邮件的 API。我用工作队列来做这件事,尤其是公牛。在开发过程中,我想到了一些事情;这些工作实际在哪里执行?目前,我通过公牛将这些作业发送到在我计算机上的 docker 容器中运行的 redis 数据库。我的第一个想法是这些作业在 redis 容器中运行,但我认为这不是真的,因为那个 redis 容器没有运行 NodeJS,而 NodeJS 正是我用于 API 的。
我想这些作业实际上是在创建它们的同一台机器上执行的。但是,如果是这样的话,那么拥有一个工作队列有什么好处呢?我认为拥有一个作业队列的目的是将任务委托给其他东西,这样 API 就不会因发送所有这些电子邮件而减慢。据我了解,现在发生的一切只是通过向redis发送和接收作业来延迟任务。
我对工作队列很陌生。我希望我已经足够清楚地描述了我的情况。
谢谢你。
作业队列用于记录工作项。
可以选择由与应用程序的其余部分分开的线程来处理队列。这对于利用多个 CPU 在后台进行异步处理很有用。
同样有用的是耐用性。如果在应用程序重新启动后仍需要发送排队等待发送的电子邮件,则需要存储。这实际上并不是微不足道的。
即使从应用程序服务器处理,队列可能仍然有用。取决于所需的功能。
此实现使用远程数据库进行存储。因此,请随意编写一个工作服务(使用公牛)并在单独的容器中运行它。
add
sa 工作项并继续前进。process
es 它并做这件事。增加concurrency
让它并行调用几次。