问题标签 [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 投票
0 回答
38 浏览

php - PHP AMQP 实现中的 QoS 设置和多通道有什么意义?

由于 PHP 是单线程的,因此在使用 AMQP 时似乎没有必要增加 QoS/预取值和使用多个通道。

我可能会在 ReactPHP 之类的东西中看到一点,但在通常的情况下,整个应用程序将在处理一条消息时被阻止,所以你不能同时处理多条消息(这是QoS 点)。同样,据我了解,您可以使用多个通道来在同一个 AMQP 连接中进行并发数据传输,但这里也因为 PHP 是单线程的,您不能通过不同的通道发送/接收数据同时。

tl;博士; 使用多个通道和 QoS > 1 有什么意义php-amqplib

0 投票
0 回答
67 浏览

php - 如何在 php lampp ubuntu 中注册 Socket 传输

我正在使用 AMQPS 开发 Rabbitmq,但这里出现错误

例外:stream_socket_client():无法连接到 amqps://myendpoint url.amazonaws.com:5671(无法找到套接字传输“amqps” - 您在配置 PHP 时是否忘记启用它?)/opt/lampp/ htdocs/mmd/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php 111

在我的 localhost/phpinfo 注册流套接字传输如下。

注册流套接字传输 tcp、udp、unix、udg、ssl、tls、tlsv1.0、tlsv1.1、tlsv1.2、tlsv1.3

那么如何注册我的“amqps”套接字传输?

0 投票
0 回答
61 浏览

rabbitmq - php-amqplib:如何获取预取缓存中的消息数?

相关问题:使用 PhpAmqpLib 从 rabbitmq 消费者回调中获取队列大小

在上述问题中,消息计数由 获得queue_declare。但是,此消息计数仅计算队列中的消息,而不是预取的消息(这正是该问题的发布者所经历的)

如果我将prefetch_count(in basic_qos) 设置为 1 并为每条消息发送 ack,则消息计数完美,但如果我将 设置prefetch_count为 10 并为每 5 条消息发送 ack,则消息计数将类似于100, 100, 100, 100, 100, 95, 95, 95, 95, 95, ...处理每条消息时.

我想要的是获取预取消息的数量并将它们相加,以便在处理每条消息时我将获得正确的消息计数,包括预取但处理的消息。

有没有办法在 php-amqplib 中获取这个数量的缓存消息?

0 投票
1 回答
56 浏览

php - 数组内爆导致 RabbitMQ 接收到空的 msg 正文,但其他发布者显示正文

第一个是从login.php$_POST中接收数据,它通过 调用另一个文件中的函数,并尽可能将其填充到我的登录页面并查看它,但它不会进入消息队列经纪人。require_once$_POSTecho

这是 RabbitMQ 收到但消息为空的代码:

这是来自另一个文件的代码,它RabbitMQ接收并确实有一个正文:

如果其中有任何错误,那是因为我不得不手动打出第二个,因为它在虚拟机上并且双向剪贴板不起作用。

编辑:这是来自login.php的代码

0 投票
0 回答
162 浏览

rabbitmq - 如何批量消费来自 RabbitMQ 队列的所有消息?

我的 RabbitMQ 消费者必须以固定大小的批次处理消息,预取计数为 15。为了匹配 AWS SES 电子邮件发送速率,这限制为 15 - 消费者进程必须并行发出 SES API 请求。处理部分最终批次的最佳方式是什么,即留下少于 15 条消息的批次。

任何新消息都会添加到消费者的批处理数组中。当达到批大小时,将处理该批并为该批中的所有消息发回确认。

最后一批中的“剩余消息”必须在 10 秒连接超时生效之前在我的场景中处理。有没有办法在回调函数上实现超时,这样,如果在一段时间内接收到的消息数量少于预取计数,则处理并确认消费者临时批处理数组中的剩余消息。值得一提的是,当消费者进程正在执行时,不会有新消息发布到队列中。提前致谢。

0 投票
1 回答
32 浏览

php - 如何管理与 RabbitMQ 的大量连接

当我们有超过 3000 个连接/秒的峰值时,我们的 rabbitmq 服务器无法跟上连接,并且新连接需要很长时间才能稳定(达到失败的 3 秒限制)。我们需要发布者快速返回,因为任何延迟都会影响用户体验。

我们目前正在研究将连接到第二个 rabbitmq 服务器的负载平衡编码为一种快速的临时解决方案。

我们只在需要发布时创建连接,并且按照最佳实践建议,我们为相同的 Web 请求/流程重用相同的连接和通道。PHP 进程的本质是在 web 请求之后死掉。

我可以重复使用连接在 Web 请求之间发布吗?

3000 连接/秒的峰值是否足以使 rabbitmq 服务器遭受 tpc 连接过载?

当我们未来有 10 倍的这个连接时,我们应该采取什么方向?

谢谢你。

0 投票
0 回答
23 浏览

php - 当rabbitmq发布者阻塞时,phpamqp如何抛出超时异常?

当我的 php 发布者将数据发送到停机 rabbitmq-service 时,我想捕获异常,我尝试设置 vm_memory_high_watermark = 0,并且 phpamqp 的 read_write_timeout = 3.0,connection_timeout = 3.0,但我仍然收到请求超时错误,请帮助我!

0 投票
1 回答
32 浏览

php - 异步消费队列响应前端请求

在我第一次尝试了解 php 中微服务的异步消息传递时。我构建了一个注册表单,使用 Ajax 将数据发送到一个 php 脚本,该脚本将消息发布到一个保存队列,然后启动 while 循环以使用一个前端队列,该队列应该将响应作为echo回传给 ajax。

问题: 在ajax调用的同一个脚本中启动消费者似乎是阻塞的,这意味着如果save服务端发生任何事情,我的服务器很忙,我什至不能^C,我必须手动杀死终端!

我该怎么办?

我的阿贾克斯电话:

我的 index.php:

0 投票
1 回答
15 浏览

rabbitmq - RabbitMQ,主题交换不显示临时队列

什么可能导致rabbit mq中的主题交换停止工作,

我正在使用rabbitmq网站上提供的用于主题交换的相同脚本发布到带有路由密钥的交换,

我可以看到我的消息正在通过交换,但我看不到临时队列,太混乱了