php - 是否可以在 rabbitmq 消费者中收听代码库更改?
问题描述
我在使用 php-amqplib 的 rabbitmq 中有一个特殊问题,其中 consumer.php 不使用更新的代码库,而是使用旧代码。
rabbitmq 有类似 laravel 的监听命令吗?php 工匠队列:听 https://laravel.com/docs/8.x/queues#running-the-queue-worker
如果没有,您可以为我的用例建议任何替代方案吗?
解决方案
您在这里混淆了不同软件的职责:
- RabbitMQ 不知道也不关心你是否在运行 PHP
- php-amqplib 不关心你正在运行什么PHP,它只是将消息传递给你指定的回调
- 您链接的 Laravel 命令建立在这些技术之上,而不是代替它们;它还在您链接的文档中明确指出,它不会监视您部署的代码中的更改
消费者脚本通常是一段包含无限循环的 PHP 代码;运行和重新启动它的一般方法是:
- 退出时使用像Supervisor这样的东西重新启动它
- 包括适当的代码以打破无限循环,从而在部署代码时使脚本干净地退出
Laravel 对此的实现是command queue:restart
,因此您可以查看它是如何编写的以获取灵感。
推荐阅读
- r - NbClus 中的错误(x,距离 =“欧几里得”,min.nc = 2,max.nc = 8,方法 =“完成”,找不到函数“NbClus”
- python - 熊猫合并用空值填充新数据框
- node.js - 如何使用函数定义 nodejs 变量?
- python-3.x - 附加包含列表的文件
- javascript - 有没有办法等待加载网站的dom(不是完整的网页)?
- api - 在哪里可以找到 IBM Cloud IAM Identity Services API 的 Swagger 文档(JSON 文档)
- c - 使用超时中断选择函数或使用同一模块中的另一个函数写入其文件描述符
- python - 如何使用 PyOpenSSL 读取 PFX 文件?
- python - TensorFlow feed_dict 无法按预期工作
- apache-spark - 无法检测 ES 版本 - 如果网络/Elasticsearch 集群不可访问(HIVE),通常会发生这种情况