问题标签 [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 - Rabbitmq restores acknowledged messages after crash/restart
I'm using rabbit with PHP on osx.
Simple example. I've one durable queue with 50K durable messages. I run the consumer script. There is example of that script:
After running consumer script i see in rabbit webadmin that messages count from that queue is lowering.
Seems everything is OK.
If i kill php consumer script with CTRL+C and script till stopping was consumed for example 10K messages i see in that 40K messages left in queue.
It's OK.
But if i kill rabbitmq with kill -9 or CRLT+C, while consumer script is running (i want to simulate crash), after restart messages count in that queue restores to 50K ..
I don't understand why? where may be the problem?
php - 是否可以在 PHP 使用者中更改 AMQPMessage 的消息头?
我正在使用 Symfony 2 和 videlalvaro/RabbitMqBundle 将消息推送到 Symfony 中的队列发布事件触发。
队列本身一切正常,消息在队列中看起来很完美。
我知道不可能在 AMQP 规范中更改消息的内容,但是是否可以添加或更改消息头,如果是这样,有人知道这是如何完成的吗?
本质上,我正在尝试优雅地实现“最大重试次数”概念。以前,我已经“确认”了该消息并将相同的消息排入同一队列,只是现在增加了“尝试次数”字段。这很好,它有效,但感觉很混乱,这就是激发这个问题的原因。
TL;DR 有什么方法可以在重新排队之前更新消息,并且标头是最好的方法吗?
非常感谢您!
javascript - 如何将 amqplib 库中的 channel.assertQueue 函数用于 node.JS?
我正在使用 RabbitMQ 和 Node.JS 开发一个消息传递应用程序。我为此目的使用 amqplib。我是 Node.JS 的新手,在理解 amqplib 的语法方面发现了一些困难。例如,有一个用于声明队列的函数,即
我从过去 2-3 天开始一直在提到这个,但我仍然不清楚这些 ->err
和ok
. 如何使用这些参数?
一个例子将不胜感激。
php - fwrite() 期望参数 1 是资源,当访问从局部变量移动到继承自 \Thread 的对象的字段时,PhpAMQP 中给出的整数
当使用连接作为继承自 \Thread 的类的字段时,我在 $this->connection->channel() 调用中收到以下错误:
警告:fwrite() 期望参数 1 是资源,整数在第 65 行的 /var/content-generator/PHP/vendor/videlalvaro/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php 中给出
如果我使用本地变量,一切正常,但我一转到现场电话就收到错误消息。
失败代码:
工作代码:
我错过了什么?我缺少一些 \Thread 或 pthreads 吗?
php - 在 RabbitMQ 中使用相同的通道进行 RPC 调用
我已经用 RabbitMQ RPC 消息替换了对 API 的 CURL 调用。rabbitmq示例一切正常
仍然看起来实现是错误的,因为每个请求都打开连接、打开通道、发送消息、等待响应、获取响应、关闭通道并关闭连接。
如何使用 PHP 实现 RabbitMQ RPC 调用以对每个请求使用相同的连接?
我使用https://github.com/videlalvaro/php-amqplib库
我的实现看起来像这样https://gist.github.com/fordnox/fa41e1233a207ec5416c
像这样使用它:
php - AMQP - 连接超时
尝试从 RabbitMQ 接收答案时收到错误消息。
当我试图从我的本地电脑接收答案时,它可以工作,但在生产服务器上 - 不是。
为什么,以及如何解决它。
谢谢!
php - 如何设置消费者一次启动,永远不间断。
我对 RabbitMQ 非常陌生,使用 RabbitMQ 3.5.3、Erlang R14B04 和 Alvaro Videla 的库(https://github.com/videlalvaro/php-amqplib)在 RabbitMQ 中排队。我需要让我的消费者连接一直保持活力,而不是生产者。 这背后的简单逻辑是,我通过 cron 运行我的生产者。在生成队列后,无需保持生产者连接。但是工人或消费者将被启动一次。这种联系不应该消失。
如果这也是由 cron 完成的,我总是会在一天结束时得到一长串消费者连接,这很烦人,而且不可取。
所以这里的重点是:
1.产生队列,每次通过cron关闭连接。
2.消费者开始一次,永远持续下去。任何排队的东西都会立即被消耗掉。
可以在我的系统中构建此架构吗?我需要在这里进行哪些必要的更改。
php - RabbitMQ(PHP)是否可以在发布之前检查频道是否有监听器?
使用 php-amqplib,是否可以在发送消息之前检查通道是否有侦听器。其背后的想法是仅在只有一些观众时才发布消息。
我查看了代码,但找不到解释它的东西。
谢谢您的帮助。
php - PHP AMQP 在请求中传递标头
我正在尝试向 AMQP 发送请求,卡在如何向请求消息中添加标头,下面是我们拥有的包装器
如何在上述消息中添加标题
call 方法是我们编写的包装器
php - PHP Ampqlib 消费者死机:读取数据时出错。收到 0 而不是预期的 1 个字节
好的,这是 Symfony2 命令行脚本的一部分。在脚本等待时,它会因此异常而死亡。
我搜索了谷歌,发现提到了 heartbeat 和 set_time_out,但是当我尝试在构造函数中设置时,但是当我从默认值更改它时,它死得更快。
这就是我的脚本的设置方式。对于它的 Amqplib 方面。
这来自具有构造函数的 AMQPStreamConnection.php。AMQPConnection 扩展 AMQPStreamConnection
关于如何摆脱错误的想法?