我使用 gearman 作为 C++ 应用程序和 PHP 应用程序之间的接口。我的工作依赖于订单。使用内存队列,它们执行的顺序与添加它们的顺序相同(由 1 个工作人员确定)。我想坚持我的队列。gearman 会按照崩溃或重启后添加的顺序在持久队列中执行作业吗?
问问题
337 次
1 回答
1
实际上确实如此。它将从中断的地方继续,并尝试完成剩余的工作。根据您的项目和队列...您可能需要为实际失败的作业添加故障保护。根据您的作业崩溃的位置,它可能已经写入数据(例如写入数据库),但如果作业重新启动,它将重试。
官方文件引用
如果作业服务器在这两个作业调用之间崩溃或重新启动,则作业将在下一次作业服务器启动期间重新加载。当作业服务器启动时,它会调用模块中的重播回调函数来提供所有未完成作业的列表。这用于填充要运行的作业的内部内存队列。一旦重播完成,作业服务器完成其初始化,并且一旦工作人员连接,作业现在可以运行(队列应该处于与崩溃时相同的状态)。
于 2017-01-02T17:41:42.350 回答