|
2 | 2 | =============================
|
3 | 3 |
|
4 | 4 | В процессе обработки заданий могут возникать исключительные ситуации. Это могут быть как внутренние
|
5 |
| -ошибки — результат криво написанного кода, так и внешние, когда недоступны запрашиваетмые сервисы |
6 |
| -и внешние ресурсы. Во втором случае неплохо иметь возможность повторить попытку выполнить задание |
7 |
| -через некоторое время. |
| 5 | +ошибки — результат криво написанного кода, так и внешние, когда запрашиваемые сервисы и внешние |
| 6 | +ресурсы временно недоступны. Во втором случае неплохо иметь возможность повторить попытку выполнить |
| 7 | +задание через некоторое время. |
8 | 8 |
|
9 | 9 | Для того чтобы это сделать существует несколько способов.
|
10 | 10 |
|
|
23 | 23 | ],
|
24 | 24 | ```
|
25 | 25 |
|
26 |
| -Опция `ttr` устанавливает резервное время для выполнения заданий в очереди. Если в течении этого |
27 |
| -времени задание не выполнилось, оно вернется в очередь на повторную попытку. Опция `attempts` |
28 |
| -устанавливает максимальное кол-во попыток. Если попытки закончились, а задание не выполнено, оно |
29 |
| -будет удалено из очереди как выполненное. |
| 26 | +Опция `ttr` устанавливает резервное время для выполнения заданий. Перед выполнением задание поподает |
| 27 | +в резерв и будет находиться там не дольше чем задано в `ttr`. Если задание не выполнилось успешно, |
| 28 | +и требуется повторная попытка, оно вернется назад в очередь. Если выполнилось - будет удалено |
| 29 | +из резерва. Опция `attempts` устанавливает максимальное кол-во попыток. Если попытки закончились, |
| 30 | +и задание не выполнилось удачно, оно так же будет удалено из резерва. |
30 | 31 |
|
31 |
| -Описанные опции действуют глобально на все задания в очереди, и чтобы для отдельных заданий это |
32 |
| -поведение переопределить существует второй способ. |
| 32 | +Устанавливая `ttr` важно учесть чтобы этого времени было достатчно, иначе воркер убьет процесс |
| 33 | +выполняющегося задания по таймауту прямо во время выполнения. |
| 34 | + |
| 35 | +Описанные опции действуют глобально на все задания в очереди, а, чтобы для отдельных заданий это |
| 36 | +поведение переопределить, существует дополнительные возможности. |
33 | 37 |
|
34 | 38 | Интерфейс RetryableJob
|
35 | 39 | ----------------------
|
@@ -64,7 +68,7 @@ class SomeJob extends Object implements RetryableJob
|
64 | 68 | Обработчики событий
|
65 | 69 | -------------------
|
66 | 70 |
|
67 |
| -Третий способ задать резервное время и необходимость повторного запуска невыполненной задачи |
| 71 | +Еще один способ задать резервное время и необходимость повторного запуска невыполненной задачи |
68 | 72 | предполагает использовать события `Queue::EVENT_BEFORE_PUSH` и `Queue::EVENT_AFTER_ERROR`.
|
69 | 73 |
|
70 | 74 | Событие `Queue::EVENT_BEFORE_PUSH` можно использовать, чтобы задать резервное время:
|
|
0 commit comments