问题标签 [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.
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 次时,它不会产生超时。
这是我失败时得到的错误:
请协助
python - 使用 pika 获取 RabbitMQ 队列的消费者总数
以下代码是我用来计算消费者数量的代码:
现在我获得的计数是活跃消费者的数量。但是,当消费者从队列中消费时,此计数将打印为零。现在我需要从队列中消费的消费者总数。这出现了 RabbitMQ 管理(作为消费者:0 活跃 25 总计)
当队列中有消息时,有没有办法从队列中获取消费者总数的计数?
先感谢您
python - Python Pika - 消费者进入线程
我正在开发一个带有后台线程的 Python 应用程序,用于使用来自 RabbitMQ 队列(主题场景)的消息。
我在按钮的 on_click 事件上启动线程。这是我的代码,请注意“#self.receive_command()”。
如果我运行此代码,我在 syslog 上看不到消息 1、2、3、5、6、7、8 但我只能看到“ENTERED”。因此,代码被锁定在 pika.BlokingConnection 上。
如果我运行相同的代码(注释线程指令并取消对函数的直接调用),所有工作都按预期工作并且消息被正确接收。
有什么解决方案可以让消费者进入线程?
提前致谢
戴维德
rabbitmq - 需要帮助识别主机名
我对 rabbitmq 很陌生,我在一个 EC2 实例上安装了 rabbitmq-server,并想在另一个 EC2 实例上创建一个使用者。
但我收到了这个错误:
那是节点状态:
这就是消费者代码:
queue - 指定这是什么类型的队列
我对消息系统非常陌生,我试图在http://www.rabbitmq.com/tutorials/上找到我的答案,我很确定它应该在那里,但到目前为止我得到了一点与所有绑定、队列、交换混淆。
因此,我正在寻找如何指定“队列”类型的问题的答案(对不起,如果我不得不为此使用其他词)。在生产者方面。为了更清楚,我会给你一个例子:
所以我希望我的消费者订阅一个“队列”,并且一旦它收到它就会根据这个队列中的内容执行一些操作。让我们说如果消息包含图片而不是做某事,如果它是文本,而不是做其他事情。
我在想我的生产者应该type:foo
在有效载荷中添加类似的东西,而不是消费者会寻找这个type
。但我希望有一个更好的解决方案。像在队列中添加标题之类的东西。
谢谢你。
python - 如何在 RabbitMQ 中创建延迟队列?
使用 Python、Pika 和 RabbitMQ 创建延迟(或停车)队列的最简单方法是什么?我见过类似的问题,但没有针对 Python。
在设计应用程序时,我发现这是一个有用的想法,因为它允许我们限制需要再次重新排队的消息。
总有可能您收到的消息超出您的处理能力,可能是 HTTP 服务器很慢,或者数据库压力过大。
我还发现,在对丢失消息零容忍的情况下出现问题时,它非常有用,而重新排队无法处理的消息可能会解决这个问题。它还可能导致消息反复排队的问题。可能导致性能问题,并记录垃圾邮件。
python - 如何为消费者订阅 N 个未知队列?
我试图了解如何做到这一点:
一些生产者创建了 N 个队列(比方说foo.1 foo.2 foo.3
)。比我在兔子的另一部分有一个消费者需要从所有 N 个(在我的示例 3 中)队列中获取消息。我知道我可以做这样的事情:
但是,如果我的消费者不知道这些名字怎么办,我真正想做的是:
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-queue
到main-queue
usingrabbitmqctl
吗?
所以最后我希望得到类似的东西:
理想情况下:
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]
python - 如何确保消息送达?
您如何确保使用Pika传递消息?默认情况下,如果消息未成功传递,它不会向您提供错误。
在此示例中,可以在 pika 确认连接已断开之前发送几条消息。
python-2.7 - 如何在订阅时添加回调以写入文件
这可能是关于 python 回调和使用 pika 一样多的问题。我正在尝试开发一些代码来订阅 RabbitMQ 中的队列,处理任何已传递消息的有效负载,然后将该有效负载写入一系列(磁盘)文件。因此,使用http://www.rabbitmq.com/tutorials/tutorial-one-python.html上的简单“Hello World”示例,我在回调函数中添加了逻辑(顺便称为“回调” ) 将任何接收到的消息有效负载写入文件。
这是主要问题:我想编写一些额外的代码,如果某个时间段已经过去,例如 300 秒(5 分钟),那么进程应该关闭文件并创建一个新文件,并将收到的任何后续新消息写入那。等等 ...
但是 - 我看到的问题是只有当消息到达队列时才会调用回调函数。我想我需要一些测量经过时间的回调函数之外的过程......
基本原理是我想创建一组磁盘文件(所有文件都具有基于时间戳的唯一名称),其中包含 MQ 队列中接收到的消息。如果消息来得很慢,那么我关闭当前打开的文件(以便可以在下游进一步处理)并打开另一个。
我还注意到,在发出开始消费调用 (channel.start_sumption) 之后,没有达到下面的代码 - 为什么?
我玩过python的多处理模块,但到目前为止还没有运气。
这是一些带有伪代码注释的骨架代码:-
谢谢 !