Перейти к содержимому

Очереди, повторы и надёжность

Интеграции не блокируют HTTP ответа покупателю.

Очереди платформы

INTEGRATION_DEDICATED_QUEUES в .envconfig/integrations.php по умолчанию true):

ОчередьЗадачи
integrations.{packageCode}DispatchModuleHookListener, inbound
integrations.outboundPOST на внешние URL

При false хуки платформы уходят в INTEGRATION_DEFAULT_QUEUE (default) — на проде не рекомендуется: конкуренция с синком и прайсами.

Jobs внутри модуля

Модуль может выбирать очередь самостоятельно для своих внутренних jobs.

Типовой подход такой:

СценарийОчередь
Платформенные hooks и inboundintegrations.{Code}
Внешние POST на URLintegrations.outbound
Внутренние тяжёлые jobs самого модуляотдельная очередь модуля или default, если это осознанное решение

Supervisor

ini
[program:platparts-integrations]
command=/usr/bin/php /var/www/SITE/artisan queue:work \
  --queue=integrations.outbound,integrations.MyCrm \
  --sleep=3 --tries=3
numprocs=1

После деплоя: php artisan queue:restart.

WARNING

На shared не делайте supervisorctl restart all — только queue:restart от пользователя сайта.

Cron

  • integrations:licenses:verify
  • integrations:hook-deliveries:prune
cron
* * * * * cd /var/www/SITE && 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 минуты — нормально.

Связанные разделы

База знаний для EMS-платформы PlatParts.