首页 > 解决方案 > 是否可以在 rabbitmq 消费者中收听代码库更改?

问题描述

我在使用 php-amqplib 的 rabbitmq 中有一个特殊问题,其中 consumer.php 不使用更新的代码库,而是使用旧代码。

rabbitmq 有类似 laravel 的监听命令吗?php 工匠队列:听 https://laravel.com/docs/8.x/queues#running-the-queue-worker

如果没有,您可以为我的用例建议任何替代方案吗?

标签: phprabbitmq

解决方案


您在这里混淆了不同软件的职责:

  • RabbitMQ 不知道也不关心你是否在运行 PHP
  • php-amqplib 不关心你正在运行什么PHP,它只是将消息传递给你指定的回调
  • 您链接的 Laravel 命令建立在这些技术之上,而不是代替它们;它还在您链接的文档中明确指出,它不会监视您部署的代码中的更改

消费者脚本通常是一段包含无限循环的 PHP 代码;运行和重新启动它的一般方法是:

  • 退出时使用像Supervisor这样的东西重新启动它
  • 包括适当的代码以打破无限循环,从而在部署代码时使脚本干净地退出

Laravel 对此的实现是command queue:restart因此您可以查看它是如何编写的以获取灵感。


推荐阅读