【问题标题】:What's the equivalent of Laravel queue jobs in Express?Express 中的 Laravel 队列作业相当于什么?
【发布时间】:2017-12-08 08:26:56
【问题描述】:

Laravel 提供了一项名为 Queues 的功能,您可以在其中使用服务(beanstalkd、Amazon SQS、Rabbit MQ)将长时间运行的任务委托给后台工作人员。一个简单的示例是通过该排队作业发送电子邮件,而不是从控制器发送电子邮件。所述排队作业能够识别任务是否完成,或者如果失败,则重试一定次数。

此功能的 Express (NodeJS) 等价物是什么(如果它存在的话)?我尝试通过直接查找服务上的资源(如 RabbitMQ)来研究该主题,但我只找到了像 this one 这样的教程,但只是通过阅读它看起来他们正在从头开始实现这个东西。

也许我的期望是这里出了什么问题,但不就是只为排队的作业编写业务逻辑代码并分派它吗?

【问题讨论】:

    标签: node.js express message-queue


    【解决方案1】:

    这是一个老问题,但由于我们已经尝试了几种使用 laravel 和 nodejs 的队列解决方案,所以我想分享一些经验。

    首先,laravel queue worker normally uses redis。每个作业都RPUSHed 到 redis 列表或ZADDed 到 ZSET。它不使用像 RabbitMQ 这样的消息队列。我会争辩说,使用 RabbitMQ 对于这项任务来说是“合格的”。这是an article 谈论从 RabbitMQ 切换到 Redis 以进行队列实现,引用“虽然 RabbitMQ 完成了这项工作并且做得很好,但我们决定将我们所有的 RabbitMQ 队列转换为 Redis。为了简单性和多功能性,我们切换了完整性(显然是为了缓存和 K/V 目的)。”

    此功能的 Express (NodeJS) 等效项是 bullbee queue。他们都像 laravel queue 一样使用 redis。我没有尝试kue,因为我觉得它太旧了。

    我最终选择了公牛而不是蜜蜂,因为我找不到一种简单的方法来暂停/取消蜜蜂的工作。我也觉得公牛比蜜蜂更积极地维护。

    值得一提的是,有一个名为 queue 的 npm 包实现了队列 @9​​87654326@。但它不适用于我的用例。

    【讨论】:

      【解决方案2】:

      在我们的例子中,当我们需要实现后台作业以使用 node 和 express 向批量用户发送带有附件的电子邮件时,我们遇到了强大的 npm 模块 Kue,它提供了 RabbitMQ 的所有功能 在 php 中提供

      Official Documentation

      希望对你有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-15
        • 1970-01-01
        • 2014-12-08
        • 2014-11-19
        • 2016-04-01
        • 1970-01-01
        • 2018-03-24
        • 2018-07-15
        相关资源
        最近更新 更多