Очереди, повторы и надёжность
Интеграции не блокируют HTTP ответа покупателю.
Очереди платформы
INTEGRATION_DEDICATED_QUEUES в .env (в config/integrations.php по умолчанию true):
| Очередь | Задачи |
|---|---|
integrations.{packageCode} |
DispatchModuleHookListener, inbound |
integrations.outbound |
POST на внешние URL |
При false хуки платформы уходят в INTEGRATION_DEFAULT_QUEUE (default) — на проде не рекомендуется: конкуренция с синком и прайсами.
Jobs внутри модуля
Модуль может выбирать очередь самостоятельно для своих внутренних jobs.
Типовой подход такой:
| Сценарий | Очередь |
|---|---|
| Платформенные hooks и inbound | integrations.{Code} |
| Внешние POST на URL | integrations.outbound |
| Внутренние тяжёлые jobs самого модуля | отдельная очередь модуля или default, если это осознанное решение |
Supervisor
ini
[program:zapex-integrations]
command=/usr/bin/php /var/www/zapex/artisan queue:work \
--queue=integrations.outbound,integrations.MyCrm \
--sleep=3 --tries=3
numprocs=1
После деплоя: php artisan queue:restart.
Внимание
На shared не делайте supervisorctl restart all — только queue:restart от пользователя сайта.
Cron
integrations:licenses:verifyintegrations:hook-deliveries:prune
cron
* * * * * cd /var/www/zapex && php artisan schedule:run
Журнал
Модули интеграций → Очередь хуков модулей
| Статус | Значение |
|---|---|
pending |
Ждёт воркера |
processing |
В работе |
completed |
Успех |
failed |
Исчерпаны попытки |
bash
php artisan integrations:hook-deliveries:prune --completed-days=60
Повторы и защита
- Handler: до 5 попыток, timeout 120 с;
- circuit breaker на пакет;
- rate limit / backpressure — см. Архитектура.
Нагрузка
1 модуль, outbound + handler, order.created + user.registered:
| Событие | Jobs ≈ |
|---|---|
| 10 заказов | 20 |
| 20 регистраций | 40 |
При numprocs=1 очередь может расти 1–2 минуты — нормально.