重启后,gearman是否会以完全相同的顺序执行作业?


Will gearman execute jobs in exactly the same order after the restart?

我使用gearman作为c++应用程序和PHP应用程序之间的接口。我的作业依赖于顺序。在内存队列中,它们按照添加的顺序执行(当然是由1个worker添加的)。我想持久化我的队列。gearman在持久队列中执行作业的顺序是否与崩溃或重启后添加作业的顺序相同?

确实如此。它将继续它离开的地方,并尝试完成剩余的工作。根据您的项目和队列…您可能需要为实际失败的作业添加failsafes。根据作业崩溃的位置,它可能已经写入数据(例如,写入数据库),但如果作业重新启动,将重试。

官方文件引用

如果作业服务器在这两个调用之间崩溃或重新启动作业时,作业将在下次作业服务器启动时重新加载。当作业服务器启动时,它将调用重放回调函数模块提供未完成的所有作业的列表。这是用于填充要运行的作业的内部内存队列。一次重放完成后,作业服务器完成初始化一旦工人连接(队列应该),作业现在就可以运行了与崩溃时的状态相同)。