最佳实践 beanstalkd (queue) 和 node.js

Posted

技术标签:

【中文标题】最佳实践 beanstalkd (queue) 和 node.js【英文标题】:Best practice beanstalkd (queue) and node.js 【发布时间】:2016-01-15 22:48:05 【问题描述】:

我目前使用 beanstalkd 和 node.js 做服务。 我想当工作失败时,在放弃工作之前重试 n 次。 如果工作成功,我想做同样的工作 10 次。 那么,最佳实践是什么,在 mongo db 中使用 jobId 存储错误和成功计数,或者删除并在正文中放置一个带有错误和成功计数的新作业。

我不知道我是否清楚?告诉我,非常感谢

【问题讨论】:

【参考方案1】:

还有一个stats-job <id>\r\n 也应该可以通过API 库获得,该API 库会返回特定作业被保留、释放、掩埋等的次数等信息。

这允许通过检查以前的保留/释放来重试失败的作业。

要多次运行同一个作业,我会亲自创建一个额外的作业,其成功计数随后会增加(进入另一个新作业) - 或者,所有九个新作业,在它们开始之前有可选的延迟。

【讨论】:

【参考方案2】:

您有几种方法可以做到这一点:

您可以释放工作,并从统计中获取储备数量 您可以放置​​一个具有重试计数的新作业,并跟踪数据负载中的历史记录

您应该做后者,并且您不需要 MongoDB 作为第二个依赖项。

【讨论】:

非常感谢您的回答,但是如果我发布了,我不知道有多少错误以及成功的次数只是总发布数没有? 你可以在消息 json 中跟踪

以上是关于最佳实践 beanstalkd (queue) 和 node.js的主要内容,如果未能解决你的问题,请参考以下文章

一种消息和任务队列——beanstalkd

C# Beanstalkd Client

什么时候用Redis

Laravel - Queue

dart系列之:集合使用最佳实践

Beanstalkd工作队列