问题标签 [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 回答
232 浏览

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?

0 投票
0 回答
341 浏览

php - 是否可以在 PHP 使用者中更改 AMQPMessage 的消息头?

我正在使用 Symfony 2 和 videlalvaro/RabbitMqBundle 将消息推送到 Symfony 中的队列发布事件触发。

队列本身一切正常,消息在队列中看起来很完美。

我知道不可能在 AMQP 规范中更改消息的内容,但是是否可以添加或更改消息,如果是这样,有人知道这是如何完成的吗?

本质上,我正在尝试优雅地实现“最大重试次数”概念。以前,我已经“确认”了该消息并将相同的消息排入同一队列,只是现在增加了“尝试次数”字段。这很好,它有效,但感觉很混乱,这就是激发这个问题的原因。

TL;DR 有什么方法可以在重新排队之前更新消息,并且标头是最好的方法吗?

非常感谢您!

0 投票
1 回答
8904 浏览

javascript - 如何将 amqplib 库中的 channel.assertQueue 函数用于 node.JS?

我正在使用 RabbitMQ 和 Node.JS 开发一个消息传递应用程序。我为此目的使用 amqplib。我是 Node.JS 的新手,在理解 amqplib 的语法方面发现了一些困难。例如,有一个用于声明队列的函数,即

我从过去 2-3 天开始一​​直在提到这个,但我仍然不清楚这些 ->errok. 如何使用这些参数?

一个例子将不胜感激。

0 投票
2 回答
643 浏览

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 吗?

0 投票
0 回答
293 浏览

php - 在 RabbitMQ 中使用相同的通道进行 RPC 调用

我已经用 RabbitMQ RPC 消息替换了对 API 的 CURL 调用。rabbitmq示例一切正常

仍然看起来实现是错误的,因为每个请求都打开连接、打开通道、发送消息、等待响应、获取响应、关闭通道并关闭连接。

如何使用 PHP 实现 RabbitMQ RPC 调用以对每个请求使用相同的连接?

我使用https://github.com/videlalvaro/php-amqplib

我的实现看起来像这样https://gist.github.com/fordnox/fa41e1233a207ec5416c

像这样使用它:

0 投票
2 回答
7929 浏览

php - AMQP - 连接超时

尝试从 RabbitMQ 接收答案时收到错误消息。

当我试图从我的本地电脑接收答案时,它可以工作,但在生产服务器上 - 不是。

为什么,以及如何解决它。

谢谢!

0 投票
1 回答
893 浏览

php - 如何设置消费者一次启动,永远不间断。

我对 RabbitMQ 非常陌生,使用 RabbitMQ 3.5.3、Erlang R14B04 和 Alvaro Videla 的库(https://github.com/videlalvaro/php-amqplib)在 RabbitMQ 中排队。我需要让我的消费者连接一直保持活力,而不是生产者。 这背后的简单逻辑是,我通过 cron 运行我的生产者。在生成队列后,无需保持生产者连接。但是工人或消费者将被启动一次。这种联系不应该消失。

如果这也是由 cron 完成的,我总是会在一天结束时得到一长串消费者连接,这很烦人,而且不可取。

所以这里的重点是:

1.产生队列,每次通过cron关闭连接。

2.消费者开始一次,永远持续下去。任何排队的东西都会立即被消耗掉。

可以在我的系统中构建此架构吗?我需要在这里进行哪些必要的更改。

0 投票
1 回答
1096 浏览

php - RabbitMQ(PHP)是否可以在发布之前检查频道是否有监听器?

使用 php-amqplib,是否可以在发送消息之前检查通道是否有侦听器。其背后的想法是仅在只有一些观众时才发布消息。

我查看了代码,但找不到解释它的东西。

谢谢您的帮助。

0 投票
1 回答
3495 浏览

php - PHP AMQP 在请求中传递标头

我正在尝试向 AMQP 发送请求,卡在如何向请求消息中添加标头,下面是我们拥有的包装器

如何在上述消息中添加标题

call 方法是我们编写的包装器

0 投票
1 回答
1171 浏览

php - PHP Ampqlib 消费者死机:读取数据时出错。收到 0 而不是预期的 1 个字节

好的,这是 Symfony2 命令行脚本的一部分。在脚本等待时,它会因此异常而死亡。

我搜索了谷歌,发现提到了 heartbeat 和 set_time_out,但是当我尝试在构造函数中设置时,但是当我从默认值更改它时,它死得更快。

这就是我的脚本的设置方式。对于它的 Amqplib 方面。

这来自具有构造函数的 AMQPStreamConnection.php。AMQPConnection 扩展 AMQPStreamConnection

关于如何摆脱错误的想法?