Будет ли gearman выполнять задания в том же порядке после перезапуска?
Я использую gearman как интерфейс между приложением C++ и приложением PHP. Моя работа зависит от порядка. С очередью в памяти они выполнялись в том же порядке, в котором они были добавлены (1 рабочий наверняка). Я хочу сохранить свою очередь. Будет ли gearman выполнять задания в постоянной очереди в том же порядке, в котором они были добавлены после сбоя или перезапуска?
1 ответ
Это действительно так. Он продолжится там, где остановился, и попытается завершить оставшиеся задания. В зависимости от вашего проекта и очереди... вам может понадобиться добавить failsafes для задания, которое фактически не удалось. В зависимости от того, где ваша работа потерпела крах, она может уже иметь записанные данные (например, в базу данных), но будет повторять попытку, если работа будет перезапущена.
цитата из официального документа
Если сервер заданий дает сбой или перезапускается между этими двумя вызовами задания, задания перезагружаются при следующем запуске сервера заданий. Когда сервер заданий запускается, он вызывает функцию обратного вызова в модуле, чтобы предоставить список всех заданий, которые не были выполнены. Это используется для заполнения внутренней памяти очередей заданий, которые нужно запустить. После завершения этого воспроизведения сервер заданий завершает свою инициализацию, и задания теперь могут выполняться после подключения рабочих (очередь должна быть в том же состоянии, что и при сбое).