Всем привет!
У нас на проекте отправляются задания на генерацию отчетов в очередь rabbitmq.
Саму очередь обслуживает php-консюмер (работает через php-amqplib).
Проблема в том, что генерация отчетов, может занимать 10 мин, некоторые даже по часу..
Консюмер работает следующим образом:
берет N-сообщений из очереди, и начинает сразу же генерировать отчеты.
В момент, когда консюмер занят генераций отчета, как я понял, rabbitmq присылает некоторые проверки на жизнеспособность консюмера —
heartbeat . По умолчанию, если консюмер не отвечает 60 сек., то при следующей итерации вылетает ошибка, что потеряно соединение.
У меня два вопроса:
1. Чем чревато отключение - heartbeat в rabbitmq ?
Почитал тут но все равно не понял.
2. Как принято обрабатывать тяжелые задачи, которые получает косюмер ? может их не стоит сразу в самом консюмере запускать ? если запускать отдельным процессом, то возникает сразу вопрос, что делать, если в процессе генерации отчета произошла ошибка ? сообщение же из очереди прочитано и отправлено ack.
нужны best practices))