Задать вопрос

Как отследить завершение очереди RabbitMQ?

Здравствуйте! Есть процесс на php который разбирает файл и импортирует товары. После импорта, нужно пересобрать кэш сайта по новым данным. Сейчас это происходит однопоточно, но есть желание обрабатывать товары через очередь на RabbitMQ, в несколько потоков. Кэш нужно сделать только после того как все товары обновятся. Каким образом оптимальнее всего дождаться и узнать в родительском процессе что очередь, из добавленных импортом, заданий завершилась? Возможно есть другие решения общей задачи - отловить событие завершения обработки заданий воркерами.
  • Вопрос задан
  • 496 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@yarkin
Если хочется реализовать всё через очередь, где каждый элемент это товар, то как вариант создать временную очередь, заполнить её новыми товарами, а потом сообщить дальше её имя. Если интересно уведомление о завершении импорта также получить через RMQ, можно создать обменник, а основной процесс создаёт себе служебную очередь и подписывается на этот обменник.
Но, имхо, если импорт происходит в одном процессе, а генерация кэша по одному элементу это очень дешёвая операция, то вероятно не очень эффективно размещать каждый товар отдельно, лучше складывать их пачками, чтобы также пачку и обработать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽