问题标签 [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.
php - PHP AMQP 实现中的 QoS 设置和多通道有什么意义?
由于 PHP 是单线程的,因此在使用 AMQP 时似乎没有必要增加 QoS/预取值和使用多个通道。
我可能会在 ReactPHP 之类的东西中看到一点,但在通常的情况下,整个应用程序将在处理一条消息时被阻止,所以你不能同时处理多条消息(这是QoS 点)。同样,据我了解,您可以使用多个通道来在同一个 AMQP 连接中进行并发数据传输,但这里也因为 PHP 是单线程的,您不能通过不同的通道发送/接收数据同时。
tl;博士; 使用多个通道和 QoS > 1 有什么意义php-amqplib
?
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”套接字传输?
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 中获取这个数量的缓存消息?
php - 数组内爆导致 RabbitMQ 接收到空的 msg 正文,但其他发布者显示正文
第一个是从login.php$_POST
中接收数据,它通过 调用另一个文件中的函数,并尽可能将其填充到我的登录页面并查看它,但它不会进入消息队列经纪人。require_once
$_POST
echo
这是 RabbitMQ 收到但消息为空的代码:
这是来自另一个文件的代码,它RabbitMQ
接收并确实有一个正文:
如果其中有任何错误,那是因为我不得不手动打出第二个,因为它在虚拟机上并且双向剪贴板不起作用。
编辑:这是来自login.php的代码
rabbitmq - 如何批量消费来自 RabbitMQ 队列的所有消息?
我的 RabbitMQ 消费者必须以固定大小的批次处理消息,预取计数为 15。为了匹配 AWS SES 电子邮件发送速率,这限制为 15 - 消费者进程必须并行发出 SES API 请求。处理部分最终批次的最佳方式是什么,即留下少于 15 条消息的批次。
任何新消息都会添加到消费者的批处理数组中。当达到批大小时,将处理该批并为该批中的所有消息发回确认。
最后一批中的“剩余消息”必须在 10 秒连接超时生效之前在我的场景中处理。有没有办法在回调函数上实现超时,这样,如果在一段时间内接收到的消息数量少于预取计数,则处理并确认消费者临时批处理数组中的剩余消息。值得一提的是,当消费者进程正在执行时,不会有新消息发布到队列中。提前致谢。
php - 如何管理与 RabbitMQ 的大量连接
当我们有超过 3000 个连接/秒的峰值时,我们的 rabbitmq 服务器无法跟上连接,并且新连接需要很长时间才能稳定(达到失败的 3 秒限制)。我们需要发布者快速返回,因为任何延迟都会影响用户体验。
我们目前正在研究将连接到第二个 rabbitmq 服务器的负载平衡编码为一种快速的临时解决方案。
我们只在需要发布时创建连接,并且按照最佳实践建议,我们为相同的 Web 请求/流程重用相同的连接和通道。PHP 进程的本质是在 web 请求之后死掉。
我可以重复使用连接在 Web 请求之间发布吗?
3000 连接/秒的峰值是否足以使 rabbitmq 服务器遭受 tpc 连接过载?
当我们未来有 10 倍的这个连接时,我们应该采取什么方向?
谢谢你。
php - 当rabbitmq发布者阻塞时,phpamqp如何抛出超时异常?
当我的 php 发布者将数据发送到停机 rabbitmq-service 时,我想捕获异常,我尝试设置 vm_memory_high_watermark = 0,并且 phpamqp 的 read_write_timeout = 3.0,connection_timeout = 3.0,但我仍然收到请求超时错误,请帮助我!
php - 异步消费队列响应前端请求
在我第一次尝试了解 php 中微服务的异步消息传递时。我构建了一个注册表单,使用 Ajax 将数据发送到一个 php 脚本,该脚本将消息发布到一个保存队列,然后启动 while 循环以使用一个前端队列,该队列应该将响应作为echo
回传给 ajax。
问题:
在ajax调用的同一个脚本中启动消费者似乎是阻塞的,这意味着如果save
服务端发生任何事情,我的服务器很忙,我什至不能^C
,我必须手动杀死终端!
我该怎么办?
我的阿贾克斯电话:
我的 index.php:
rabbitmq - RabbitMQ,主题交换不显示临时队列
什么可能导致rabbit mq中的主题交换停止工作,
我正在使用rabbitmq网站上提供的用于主题交换的相同脚本发布到带有路由密钥的交换,
我可以看到我的消息正在通过交换,但我看不到临时队列,太混乱了