问题标签 [php-amqplib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
644 浏览

php - 如何使用videlalvaro/php-amqplib 完成阻塞basic_get 调用

我正在使用https://github.com/videlalvaro/php-amqplib做一些 rabbitmq 工作:

我正在尝试创建一个阻塞版本的basic_get,(或者一个我可以重复调用并且每次只能得到一个消息的basic_consume版本),它将阻塞直到一条消息准备好然后返回它而不是返回null,如果没有在队列中。

当我尝试使用 basic_consume 获取一条消息时,事情会变得混乱,我最终会收到一堆“未准备好”但未确认的消息。(如果我以这种方式只获取一条消息,则每次都有效,如果我尝试获取 2 条消息,它有时会挂断并可以正常工作)

0 投票
1 回答
230 浏览

php - 用PHP编写RabbitMQ的订阅方法

我有一个如下定义的函数:

我正在使用以下功能:

注意:以下行位于不同的类文件中,因此创建了包含上述函数的类的对象。

基本上,我想将每条消息的正文返回给发布到队列的调用者函数。

电流输出:

预期输出:

0 投票
0 回答
1866 浏览

php - RabbitMQ php错误套接字连接超时

我收到套接字连接超时错误。由于 php-amqplib 上的帖子有限。想不通。

注意:我正在尝试捕获该错误并重新连接它。但无法弄清楚如何在php中做到这一点。nodejs 的 _onError 行会有所帮助。

我收到以下错误:

我正在使用以下连接功能:

以及以下发送消息:

0 投票
1 回答
1609 浏览

php - 使用 php-amqplib 和 rabbitmq 在 php 中使用多种类型的消息传递队列

所以,我正在尝试创建一个可以做 4 件事的简单应用程序。

1)获取消费者列表(如果我能得到那些注册的人......也许我可以在他们加入时以某种方式命名他们,所以它是动态的)。

2) 向一个随机消费者发送“消息”并显示结果

3)向一个特定的消费者(从上面的列表或预定义的列表中获取)发送“消息”并显示结果

4) 向所有消费者发送一条“消息”并显示来自每个消费者的结果。

该应用程序使用 php-amqplib ( https://github.com/videlalvaro/php-amqplib ) 在 php 中完成。rabbitmq 已启动并正在运行,并且似乎可以正常工作(尝试了教程)。

amqp lib 的文档对我来说有点奇怪,所以我非常感谢一些示例代码行和所用参数的描述。

0 投票
0 回答
338 浏览

php - 高 CPU PHP (symfony) 进程

我们正在使用https://github.com/php-amqplib/php-amqplib来使用来自 rabbitmq 的消息。我们有几个消费者运行愉快,没有任何问题。今天我们发现我们的一个消费者进程在空闲时消耗了大约 7% 的主机 CPU(队列中没有消息),而其余的每个进程消耗了大约 1%。

最重要的是,在打开和关闭此进程时,我们会看到我们的数据库(AWS RDS postgres 实例)的 CPU 利用率发生了很大变化。在运行 3 个消费者进程的情况下,我们的数据库始终处于 > 30% 的 CPU 利用率(即使队列中没有任何内容)。

我们有一个标准的 symfony 配置,我们的消费者使用app/console rabbitmq:consumer -w consumer_name. 据我们所知,有问题的消费者对此并没有什么特别之处。我们在这里完全没有线索,所以任何帮助将不胜感激。

更多细节:

当我们打开消费者时,我们可以看到同一组查询在数据库上运行了大量时间(在 10 分钟的时间内运行了 200,001 次)。队列中没有未确认的消息。否则,消费者会正确处理消息。该查询是一个 SELECT,它将作为消费者逻辑的一部分正常运行。

0 投票
2 回答
13482 浏览

php - RabbitMQ 错误超时

我设置了 RabbitMQ 以解析来自外部 API 的大约 20.000 个请求,但几分钟后它一直超时。它确实可以正确解析总共 20.000 个请求中的大约 2000 个。

日志文件说:

我已经增加了心跳值,但我无法弄清楚它为什么会超时。配置为:Ubuntu 14.04、NGINX 1.8.1、RabbitMQ 3.6.0

感谢您的时间和投入!

0 投票
1 回答
762 浏览

php - PHP AMQP 消费者在一段时间后没有响应

我在这里遇到了一个 php amqp 消费者的小问题,它会在一段时间后退出工作。下面你可以看到我的 silex 命令。我还尝试使用 heartbeat 和 keepalive 配置来处理断开的网络连接,但它并没有改变。消费者没有从队列中读取消息的原因可能是什么?脚本没有退出,它似乎只是在睡觉。

0 投票
1 回答
12360 浏览

php - 对等方重置 RabbitMq 连接

我对 RabbitMQ 有污点错误。我发送了一些关于产品抛出 RabbitMq 和 Php 的信息,但是出了点问题。我可以在一分钟后发送消息,我有异常 "errno=104 Connection reset by peer" 。见下文:

rabbitmq 版本 - 3.6.1,php 版本 - 7.0.5,php-amqp 库版本 - “videlalvaro/php-amqplib”:“~2.7

来自 rabbitmq 的日志:

0 投票
1 回答
554 浏览

php - RabbitMQ PHP 驱动程序 (AMQP):处理阻塞的连接

我正在尝试构建有意义的代码来处理 RabbitMQ 由于磁盘级别或内存水印警报而开始阻止连接的情况。

可以为有关将连接设置为阻塞模式的通知添加处理程序。

但是,似乎只有当我尝试关闭连接时才会发送此通知。

所以跑步

成功执行,处理程序没有收到有关阻塞连接的通知。

同时,消息没有添加到队列中-我可以从仪表板中看出它。

但是当我尝试明确关闭连接时:

或隐式(通过让脚本完成,AMQP 对象析构函数完成其余工作)我收到通道被阻塞的通知,并且在该脚本冻结之后,据我所知,它等待一些数据完成 close_ok 方法。

所以问题是如何在发布时(或之后)获取有关被阻止频道的信息?以及如何避免脚本在阻塞连接上永远等待?

提前致谢。

0 投票
0 回答
525 浏览

rabbitmq - RabbitMq PhpAmqpLib 错误“权限被拒绝”

我的脚本中有 PhpAmqpLib 错误:

我这样使用它:

我尝试了很多事情,例如:

1)编辑iptables并重新启动它:

2) 尝试检查 SELinux

3)再次删除和安装erlang和rabbitmq

但这没有帮助。

Rabbitmq 管理插件工作,我可以在这里显示信息:127.0.0.1:15672

Rabbitmq 服务器也处于活动状态。

我使用 Red Hat Enterprise Linux Server 6.5 版。

也许有人知道问题的原因是什么?

ps我通过使用解决了这个问题: