【发布时间】:2019-05-26 04:24:24
【问题描述】:
有人可以告诉我使用 RabbitMQ(消息队列)而不是延迟作业(后台处理)的优势吗?
基本上我想知道什么时候使用后台处理和消息队列?
我的 Web 应用程序有 3 个组件,其中一个主服务器将处理所有用户请求,另一个应用服务器应该运行所有后台作业(如 es reindex、es 记录更新、发送电子邮件、crons)。
我看到文章说数据库作为队列(延迟作业)非常糟糕,因为消费者将轮询数据库以获取新作业并更新将锁定表的作业状态。那么rabbit MQ或者其他消息队列如何存储来避免这个问题。
延迟作业还有其他替代方案,例如 sidekiq,它将通过 redis 而不是 mysql 运行。用sidekiq代替rabbitmq更好吗?
与延迟作业相比,使用 sidekiq 有什么优势吗?
【问题讨论】:
-
第一个常见问题解答:github.com/mperham/sidekiq/wiki/FAQ
-
你说得对,数据库会使工作变慢。即使是 sidekiq 也必须为每个作业进行 3 次 Redis 往返。看看这个sneakers.io
标签: rabbitmq message-queue sidekiq delayed-job task-queue