当前位置: 首页 > 知识库问答 >
问题:

有可能在Rabbitmq消费者中监听代码库的变化吗?

郝永思
2023-03-14

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

rabbitmq是否具有类似于laravel listen命令的功能?php artisan队列:侦听https://laravel.com/docs/8.x/queues#running-排队工人

如果没有,你能为我的使用提出任何替代方案吗?

共有1个答案

顾俊楚
2023-03-14

你在这里混淆了不同软件的责任:

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

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

  • 当它退出时,使用类似Supervisor的工具重新启动它

Laravel对此的实现是队列:restart命令,所以您可以看看它是如何编写的,从中获得灵感。

 类似资料:
  • 我发现消费者可能会退出,需要监听到了自动重启。

  • 本文向大家介绍AngularJS监听路由的变化示例代码,包括了AngularJS监听路由的变化示例代码的使用技巧和注意事项,需要的朋友参考一下 话不多说,我们下面直接来看实现的示例代码 【一】Angular 路由状态发生改变时可以通过' $stateChangeStart '、' $stateChangeSuccess '、' $stateChangeError '监听,通过注入'$locatio

  • 我对RabbitMQ很陌生,所以如果我的问题听起来很琐碎,请原谅。我想在RabbitMQ上发布消息,它将由RabbitMQ消费者处理。 我的消费者机器是一个多核机器(最好是azure上的工作者角色)。但QueueBasicConsumer一次推送一条消息。我如何编程来利用我可以同时处理多个消息的所有核心。 一种解决方案是在多个线程中打开多个通道,然后在那里处理消息。但在这种情况下,我将如何决定线程

  • 我有以下场景:有3个rabbitmq队列,生产者根据消息的优先级将消息推送到这些队列。(myqueue_high,myqueue_medium,myqueue_low)我希望有一个可以按顺序或优先级从这些队列中提取的单一使用者,即只要消息在那里,它就一直从高队列中提取。它是从介质中拉出来的。如果medium也是空的,它从Low拉出。 我如何实现这一点?我需要编写自定义组件吗?

  • 问题内容: 接口的许多lambda都采用以下形式 我经常这样做,以至于我为此写了一个方法。 这使我可以做一些非常好的事情,例如: 是否有另一种方法可以在不依赖我自己的方法的情况下进行这样的转换?我错过了新API中的任何东西,这些东西使我的方法变得多余了吗? 问题答案: 有许多潜在的有用的方法,可以被添加到,和接口。您提供了一个很好的示例(将a转换为),但是可以添加许多其他潜在的转换或实用程序。例如

  • 使用RabbitMQ,有没有一种方法可以将消息从队列“推送”给使用者,而不是让使用者从队列“轮询并拉出”消息? 这也是我目前正在进行的一个项目引起一些争论的原因。一个方面的论点是,让使用者(即windows服务)“轮询”队列直到新消息到达,与将消息从队列自动“推送”到订户/使用者的想法相比,这种想法有些低效,也不太理想。 我似乎只能找到支持消费者从队列中“轮询并拉出”消息的信息(例如,使用wind