问题标签 [pika]

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 投票
2 回答
4409 浏览

python - Pika blocking_connection.py 连接到 RabbitMQ 的随机超时

我有一个在机器上运行的兔子 mq

  • 客户端和rabbitMQ都在同一个网络上运行
  • rabbitMQ有很多客户端
  • 我可以从 rabbitMQ ping 客户端并返回
  • 机器之间测量的最长延迟为 12.1 毫秒
  • 网络详细信息:标准交换机网络(在单个物理机上运行的虚拟机网络 - 使用 vmware VC)

初始化 RPC 连接时出现随机超时

/usr/lib/python2.6/site-packages/pika-0.9.5-py2.6.egg/pika/adapters/blocking_connection.py

问题是超时不一致并且不时发生。

当手动测试此问题并从同一台机器上运行blocking_connection.py 1000 次时,它不会产生超时。

这是我失败时得到的错误:

请协助

0 投票
2 回答
6048 浏览

python - 使用 pika 获取 RabbitMQ 队列的消费者总数

以下代码是我用来计算消费者数量的代码:

现在我获得的计数是活跃消费者的数量。但是,当消费者从队列中消费时,此计数将打印为零。现在我需要从队列中消费的消费者总数。这出现了 RabbitMQ 管理(作为消费者:0 活跃 25 总计)

当队列中有消息时,有没有办法从队列中获取消费者总数的计数?

先感谢您

0 投票
2 回答
10619 浏览

python - Python Pika - 消费者进入线程

我正在开发一个带有后台线程的 Python 应用程序,用于使用来自 RabbitMQ 队列(主题场景)的消息。

我在按钮的 on_click 事件上启动线程。这是我的代码,请注意“#self.receive_command()”。

如果我运行此代码,我在 syslog 上看不到消息 1、2、3、5、6、7、8 但我只能看到“ENTERED”。因此,代码被锁定在 pika.BlokingConnection 上。

如果我运行相同的代码(注释线程指令并取消对函数的直接调用),所有工作都按预期工作并且消息被正确接收。

有什么解决方案可以让消费者进入线程?

提前致谢

戴维德

0 投票
1 回答
1088 浏览

rabbitmq - 需要帮助识别主机名

我对 rabbitmq 很陌生,我在一个 EC2 实例上安装了 rabbitmq-server,并想在另一个 EC2 实例上创建一个使用者。

但我收到了这个错误:

那是节点状态:

这就是消费者代码:

0 投票
1 回答
62 浏览

queue - 指定这是什么类型的队列

我对消息系统非常陌生,我试图在http://www.rabbitmq.com/tutorials/上找到我的答案,我很确定它应该在那里,但到目前为止我得到了一点与所有绑定、队列、交换混淆。

因此,我正在寻找如何指定“队列”类型的问题的答案(对不起,如果我不得不为此使用其他词)。在生产者方面。为了更清楚,我会给你一个例子:

在此处输入图像描述

所以我希望我的消费者订阅一个“队列”,并且一旦它收到它就会根据这个队列中的内容执行一些操作。让我们说如果消息包含图片而不是做某事,如果它是文本,而不是做其他事情。

我在想我的生产者应该type:foo在有效载荷中添加类似的东西,而不是消费者会寻找这个type。但我希望有一个更好的解决方案。像在队列中添加标题之类的东西。

谢谢你。

0 投票
6 回答
34303 浏览

python - 如何在 RabbitMQ 中创建延迟队列?

使用 Python、Pika 和 RabbitMQ 创建延迟(或停车)队列的最简单方法是什么?我见过类似的问题,但没有针对 Python。

在设计应用程序时,我发现这是一个有用的想法,因为它允许我们限制需要再次重新排队的消息。

总有可能您收到的消息超出您的处理能力,可能是 HTTP 服务器很慢,或者数据库压力过大。

我还发现,在对丢失消息零容忍的情况下出现问题时,它非常有用,而重新排队无法处理的消息可能会解决这个问题。它还可能导致消息反复排队的问题。可能导致性能问题,并记录垃圾邮件。

0 投票
3 回答
113 浏览

python - 如何为消费者订阅 N 个未知队列?

我试图了解如何做到这一点:

一些生产者创建了 N 个队列(比方说foo.1 foo.2 foo.3)。比我在兔子的另一部分有一个消费者需要从所有 N 个(在我的示例 3 中)队列中获取消息。我知道我可以做这样的事情:

但是,如果我的消费者不知道这些名字怎么办,我真正想做的是:

0 投票
1 回答
15050 浏览

python - 是否可以在 RabbitMQ 队列之间移动/合并消息?

我想知道是否可以将消息从一个队列移动/合并到另一个队列。例如:

main-queue包含消息['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5']

dog-queue包含消息['dog-1, dog-2, dog-3, dog-4]

所以问题是,(假设两个队列都在同一个集群上,vhost)可以将消息从移动dog-queuemain-queueusingrabbitmqctl吗?

所以最后我希望得到类似的东西:

理想情况下:

main-queue['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5', dog-3, dog-4]

但这也可以:

main-queue['cat-1','cat-2','cat-3','cat-4','dog-1','dog-2','cat-5', 'dog-1, dog-2, dog-3, dog-4]

0 投票
2 回答
3452 浏览

python - 如何确保消息送达?

您如何确保使用Pika传递消息?默认情况下,如果消息未成功传递,它不会向您提供错误。

在此示例中,可以在 pika 确认连接已断开之前发送几条消息。

0 投票
1 回答
1254 浏览

python-2.7 - 如何在订阅时添加回调以写入文件

这可能是关于 python 回调和使用 pika 一样多的问题。我正在尝试开发一些代码来订阅 RabbitMQ 中的队列,处理任何已传递消息的有效负载,然后将该有效负载写入一系列(磁盘)文件。因此,使用http://www.rabbitmq.com/tutorials/tutorial-one-python.html上的简单“Hello World”示例,我在回调函数中添加了逻辑(顺便称为“回调” ) 将任何接收到的消息有效负载写入文件。

这是主要问题:我想编写一些额外的代码,如果某个时间段已经过去,例如 300 秒(5 分钟),那么进程应该关闭文件并创建一个新文件,并将收到的任何后续新消息写入那。等等 ...

但是 - 我看到的问题是只有当消息到达队列时才会调用回调函数。我想我需要一些测量经过时间的回调函数之外的过程......

基本原理是我想创建一组磁盘文件(所有文件都具有基于时间戳的唯一名称),其中包含 MQ 队列中接收到的消息。如果消息来得很慢,那么我关闭当前打开的文件(以便可以在下游进一步处理)并打开另一个。

我还注意到,在发出开始消费调用 (channel.start_sumption) 之后,没有达到下面的代码 - 为什么?

我玩过python的多处理模块,但到目前为止还没有运气。

这是一些带有伪代码注释的骨架代码:-

谢谢 !