Для работы с очередями использую расширение yii2-queue и драйвер \yii\queue\amqp_interop\Queue
Сообщения успешно уходят в очередь и до какого-то момента успешно обрабатываются потребителем, запущенным командой queue/listen. В какой-то момент сообщения начинают накапливаться, в то время как потребитель все еще запущен, но ничего не выполняет. Помогите, пожалуйста, куда копать. Что еще нужно рассказать?
Евгений Самсонов, Евгений, ни в коем случае не хочу показаться невежливым, но я в упор не понимаю, что и где мне нужно логгировать и как дебажить. У меня есть набор событий, на которые я подписан и по которым пишу логи. beforeExecute и afterExecute одни из них. Проблема в том, что события просто перестают происходить, а после перезапуска снова начинают обрабатываться
очень мало вводных и сответвенно очень много вариантов где может быть проблема:
1. возможно приложение пишет куда то логи (это не логи консоли которые вы привели), посмотрите что там для начала.
2. есть вариант что просто начинает потреблять больше ресурсов и каждой итерацией работает медленней и медленней, и в конце концов кажется что зависает - пологируйте время обработки ивента и посмотрите на динамику. если прообема в этом то нужно поработать над оптимизацией консьюимера (посмотртеть на каком этапе накапливается потребление ресурсов, можно так же таймингом или замером потребления памяти например, скорее всего дело в этом) или возможно сделать его переапуск по таймауту/забитым ресурсам/отработанным ивентам как угодно еще.
3. попробуйте пологировать хоть бы и вардампом (или логируйте) на каком этапе скрипта зависает консьюмер, возможно это происходит только на ивентах определенного типа или установите xdebug, расставте брейкпоинты и погоняйте ивенты через них, возможно где то зацепитесь.
4. возможно дело не в самом скрипте а в том куда оно обращается - реббит, база данных, хттп запросы, еще что-то, это все можно выяснить либо через дебаг, либо тупо пшагово комментировать этапы скрипта, либо замерами времени/ресурсов
Я не знаток PHP, но ситуация выглядит похожей на то, что RabbitMQ ждёт подтверждения обработки сообщений, но консьюмер их не шлёт. Попробуйте рестартануть консьюмер, если он начнет получать те же сообщения снова, то проблема точно в этом. Если доступна веб-морда менеджмента RabbitMQ, то там можно найти точные сведения, что происходит сейчас.