Розміщення та прив’язка worker
Назва черги визначає межу маршрутизації й не гарантує прив’язки до фізичного
хоста. Властивість $queue workflow або activity обмежує коло worker, які можуть
отримати завдання, але його може отримати будь-який сумісний worker, що опитує
цю чергу. Не передавайте дані між звичайними activity через локальну файлову
систему worker, якщо вони також не збережені в стійкому спільному сховищі.
Спрямування роботи до окремого пулу worker
Використовуйте окрему чергу, якщо певному класу роботи потрібен конкретний пул worker, наприклад із підключеним спільним томом чи підтримкою GPU:
use Workflow\V2\Activity;
final class RenderVideo extends Activity
{
public ?string $queue = 'gpu-activities';
}
Запускайте на цій черзі лише призначені для неї worker Laravel:
php artisan queue:work --queue=gpu-activities
Laravel Horizon може наглядати за цією ж чергою. В обох випадках гарантується виконання одним із worker, призначених цій черзі. Це не гарантія виконання в тому самому процесі чи на тому самому хості, що виконував попередній крок. Дані для передавання розміщуйте в стійких даних workflow, зовнішньому сховищі даних або іншому спільному сховищі, доступному кожному відповідному worker.
Вибір потрібного контракту прив’язки
- Використовуйте звичайну activity в черзі, якщо роботу може виконати будь-який сумісний worker її черги.
- Використовуйте локальну activity, якщо одна коротка activity з повторними спробами має виконуватися в процесі worker workflow, який зараз обробляє завдання workflow.
- Використовуйте сесію worker, якщо кілька стійких кроків activity мають повторно використовувати одну оренду сесії worker для стану процесу, пам’яті GPU чи файлової системи, підключеної локально до worker.
Сесії worker спочатку також застосовують маршрутизацію черг. Після маршрутизації вони додають явний контракт оренди та можливостей, включно зі строком дії й необов’язковим повторним отриманням. Вони не роблять окрему машину безсмертною. Якщо стан має пережити втрату worker чи повторне отримання сесії, зберігайте його в стійкому спільному сховищі.
Порівняння способів розміщення наведено в моделі виконання activity, а налаштування черги на рівні класу й окремого виклику — у параметрах.