Answer the question
In order to leave comments, you need to log in
How to track the completion of the RabbitMQ queue?
Здравствуйте! Есть процесс на php который разбирает файл и импортирует товары. После импорта, нужно пересобрать кэш сайта по новым данным. Сейчас это происходит однопоточно, но есть желание обрабатывать товары через очередь на RabbitMQ, в несколько потоков. Кэш нужно сделать только после того как все товары обновятся. Каким образом оптимальнее всего дождаться и узнать в родительском процессе что очередь, из добавленных импортом, заданий завершилась? Возможно есть другие решения общей задачи - отловить событие завершения обработки заданий воркерами.
Answer the question
In order to leave comments, you need to log in
Если хочется реализовать всё через очередь, где каждый элемент это товар, то как вариант создать временную очередь, заполнить её новыми товарами, а потом сообщить дальше её имя. Если интересно уведомление о завершении импорта также получить через RMQ, можно создать обменник, а основной процесс создаёт себе служебную очередь и подписывается на этот обменник.
Но, имхо, если импорт происходит в одном процессе, а генерация кэша по одному элементу это очень дешёвая операция, то вероятно не очень эффективно размещать каждый товар отдельно, лучше складывать их пачками, чтобы также пачку и обработать.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question