можно ли прослушивать изменения в кодовой базе в rabbitmq consumer?

#php #rabbitmq

#php #rabbitmq

Вопрос:

У меня есть особая проблема в rabbitmq с использованием php-amqplib, где consumer.php не использует обновленную кодовую базу и вместо этого использует старый код.

Есть ли в rabbitmq что-то похожее на команду прослушивания laravel? очередь php artisan: прослушивание https://laravel.com/docs/8.x/queues#running-the-queue-worker

Если нет, можете ли вы предложить какие-либо альтернативы для моего использования?

Ответ №1:

Здесь вы путаете обязанности разных частей программного обеспечения:

  • RabbitMQ не знает и не заботится о том, что вы даже используете PHP
  • php-amqplib не волнует, какой PHP вы используете, он просто доставляет сообщения на указанный вами обратный вызов
  • команда Laravel, которую вы связали, построена поверх этих технологий, а не вместо них; в документации, которую вы связали, также явно указано, что она не будет отслеживать изменения в вашем развернутом коде

Сценарий пользователя обычно представляет собой фрагмент PHP-кода, содержащий бесконечный цикл; общий подход к запуску и перезапуску этого:

  • Используйте что-то вроде Supervisor, чтобы перезапустить его при выходе
  • Включите соответствующий код для выхода из бесконечного цикла и, таким образом, завершите работу скрипта чисто при развертывании вашего кода

Реализация Laravel — это queue:restart команда, так что вы можете посмотреть, как это написано для вдохновения.