问题标签 [job-queue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
395 浏览

php - 什么构成了作业队列中的重试?

我最初在 Zend 论坛上发布了这个问题,但我认为在这里发布也是明智之举。

确切地说,要重试工作,必须发生什么?我尝试过超时、50x 响应代码,并将状态设置为“FAILED”。

我有一个创建工作的简单脚本......

我试图通过删除consumer.php、从consumer.php 中返回500 并让consumer.php 花费比jqd.ini 中为zend_jobqueue.http_job_timeout 设置的120 秒更长的时间来触发作业重试。这些似乎都不会触发重试。

所以,我问,实际上什么会触发重试?

请帮忙。

0 投票
1 回答
1073 浏览

php - 使用 Gearman 推迟作业队列

我想将一些耗时的东西提取到队列中。为此,我发现 Gearman 是最常用的,但不知道它是否适合我。我们要做的任务之一是排队发送电子邮件,并希望提供能够取消发送邮件 1 分钟的功能。所以它不应该立即工作,而是在现在 + 1 分钟执行它。这样我就可以在此之前取消作业并且它永远不会被发送。

有没有办法做到这一点?

它将在 debian 上运行。并且应该可以从 php 中使用。到目前为止,我发现的唯一一件事是在 Gearman 中安排一个特定日期和时间的工作,但它运行在没有广泛传播的东西上:(

0 投票
1 回答
726 浏览

c# - C# .NET 工作负载处理 a'la 作业队列处理示例的想法?

作为我不断学习如何使应用程序更好地扩展的过程的一部分,我目前正在尝试为队列找到一个方向,即工作队列或工作量处理,无论你喜欢哪个短语。

在遥远的过去,我使用了 IBM MQ/Series - 它适用于金融应用程序,但如果我记得的话,它相当重。

我知道 MSMQ,也听说过不少其他的。

但首先,这是我的背景

我有一个 C#/.NET 后端 Web 应用程序,它通过 AJAX 调用等向 Javascript(主要是 jQuery 等)前端提供数据等。我有一种情况,其中某个操作涉及上传一些文件,设置一些记录数据库中的条目,向一些用户发送电子邮件等。因此,由于可能的时间延迟,我当然不想让这个过程“在线”/“实时”,而且我确信网络服务器/数据库等的开销。

因此,考虑到我需要排队和处理的“消息”类型,什么是一个好的起点(我不应该在这里简单地说!)?我应该使用 MSMQ 和/或 SQL 2008 服务代理程序,还是 ZeroMQ 之类的东西运行 - 还是应该简单地创建自己的轻量级工作负载队列服务?

我再次意识到,在没有看到全貌的情况下,很难提出完整的建议,但是任何起点都非常感谢!

大卫

0 投票
2 回答
485 浏览

perl - 自重排作业队列的方法

我有一个作业队列(使用 Amazon SQS),它将作业交给许多机器,以通过 HTTP 获取和处理各种文档。有数百个不同的主机被访问,并且这些作业没有可预测的顺序。

为了礼貌,我不希望我的系统反复锤击单个主机。因此,如果我得到一个作业 #123 来从 example.com 获取一些东西,但我发现我刚刚在过去 X 秒内从 example.com 获取了另一个东西,我应该继续做其他事情并将作业 #123 保存为之后。

问题是,实现这种模式的好方法是什么?

第一步似乎是让工作运行者在某处保留所有域的列表,以及最后一次访问该域上的某些内容。我想这可能是一个简单的数据库表。

如果消息处理器获得必须推迟的工作,那么有许多可能的选择。

  1. 只需将消息的副本推送到队列的末尾,然后将其丢弃而不执行。希望下次它出现时,已经有足够的时间过去了。这可能会导致大量冗余 SQS 消息,特别是如果同一域的大型作业集群同时通过。

  2. 在礼貌要求可以执行该工作之前,需要多睡几秒钟。这可能会导致许多队列处理器同时无所事事。

  3. 接受该作业,但将其保存在每个队列处理器的某个本地队列中。我想每个处理器都可以通过这种方式“声明”许多工作,然后选择以任何顺序处理它们以达到最大的礼貌。这仍然是不可预测的,因为每个队列处理器都需要知道所有其他队列处理器所命中的域。

  4. 为每个域建立单独的队列,并为每个队列设置一个专用进程。每个进程在执行每个作业之间都必须暂停 X 秒,因此有很多睡眠进程开销,但这也许不是一件坏事。

你有设计这种东西的经验吗?你会推荐什么策略?

0 投票
2 回答
3090 浏览

c# - 具有延迟事件通知的 C# 作业队列实现

我正在寻找 .Net (3.5) 中现有的作业队列实现,我想知道是否有人有好的建议。我假设没有工作队列能够完全按照我们的意愿行事,所以我正在寻找一个可以轻松扩展的队列。

我们的基本要求:

  1. 需要能够并行或串行运行作业。有些作业可能必须串行完成,有些可能能够并行运行,即使这些串行作业正在运行。
    (我想从技术上讲,我们可以有 2 个作业队列,但基本实现仍然需要能够同时处理这两个。)
  2. 需要能够让作业触发进度事件 - 但我们希望事件能够在它们准备好时触发,或者排队然后根据来自 UI 的轮询触发。
    (我们希望在主 GUI 线程中处理所有事件,因此在 GUI 更新时,我们希望触发自上次更新以来发生的所有事件。)

谢谢,里

0 投票
2 回答
4015 浏览

php - node.js 中的作业队列

我正在寻找可以由 php 调用的 node.js 中的作业队列管理器。这适用于需要发送电子邮件、创建 pdf 文件等的 web 应用程序,我想执行 php 进程的异步操作。

流程示例:

  1. 用户请求一个 php 页面
  2. php调用作业队列管理器并添加一个任务
  3. 任务在 node.js 中与 php 异步执行,最好是在它更安静的时候
  4. 任务是执行一个php脚本

为什么会有这个“复杂”的系统?

  1. 我们用 php(Zend 框架)编写所有的 Web 应用程序
  2. 我们想开始学习 node.js
  3. 我们需要一个异步进程(快速响应!)
  4. “真正的”任务也应该是一个 php 脚本,以利用已编写的 php 类,轻松访问数据库连接并尽可能 DRY

该系统的用例:

  1. 用户自行注册,系统将发送欢迎邮件
  2. 用户完成电子商务订单,系统将发送发票

最后,我们还想使用 node-cron 来执行非系统范围的 cron 任务(非常特定于应用程序)。Node-cron 将调用作业队列管理器,该管理器随后将运行一个 php 脚本。

节点中是否已经有这样的应用程序?

0 投票
1 回答
1121 浏览

high-availability - 多个 gearman 服务器可以共享同一个 libdrizzle 队列吗?

多个 gearman服务器可以通过 libdrizzle 共享同一个 gearman 队列吗?

我想知道这是否会消除 Gearman 服务器作为单点故障的情况——如果我有多个 Web 节点,每个节点都与同一个 Gearman 服务器通信,那么如果 Gearman 不可用,该站点就会死掉。但是,如果每个 Web 节点都运行自己的 gearman 服务器(并且该节点生成的作业排队到在同一节点上运行的 gearman 服务器),那么单点故障将转移到数据库。(在我们的架构中,这无论如何都是单点故障。)

0 投票
1 回答
668 浏览

gearman - gearman 和重试具有不可靠外部依赖的工人

我正在使用 gearman 对各种不同的作业进行排队,其中一些总是可以立即得到服务,而一些可能会“失败”,因为它们需要不可靠的外部服务。(例如,发送电子邮件可能需要经常不可用的 SMTP 服务器。)

如果外部服务出现故障,我想将所有需要该服务的作业保留在队列中,并偶尔(例如每隔几分钟)重试一项作业,直到该服务再次可用。(如果服务几个小时不可用,也许可以选择发送电子邮件。)

但是,我希望尽快将不需要失败服务的工作传递给工人。如何做到这一点?(如有必要,我很乐意将一些逻辑放入工人中,尽管在工人方面节流似乎有点“迟到”。)

0 投票
1 回答
886 浏览

ibm-midrange - 如何检索作业队列中的计划作业列表?

我被分配了一项任务,以检查作业当前是否作为计划作业存在于作业队列中。匹配标准是作业的名称 - 只要作业名称与指定的名称匹配,它就会计数。那么有没有简单的方法来返回给定作业队列中的预定作业列表?或者有没有更好的方法来完成我的任务?

0 投票
0 回答
2023 浏览

ruby - Resque 与 Sidekiq

我正在和一个朋友一起做一个项目,我们一直在使用 Resque 来处理来自我们的 rails 应用程序中数据输入的各种命令。

我们一直在搞乱使用 Sidekiq 的想法,因为它是多线程的,不会占用内存,也不需要为每个工作人员启动 ruby​​ 环境。

我希望实时收集使用 Resque 和 Sidekiq 的人们的一些想法和意见,并解释它们之间的差异。

那么,Sidekiq 对 Resque 的优缺点是什么?