问题标签 [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 (python) 向 RabbitMQ 确认消息时出现错误“未知的传递标签”
我想在几个线程中处理消息,但在执行此代码期间出现错误:
错误说明:
版本:鼠兔 0.9.5、rabbitMQ 2.6.1
python - RabbitMQ、Pika 和重连策略
我正在使用 Pika 处理来自 RabbitMQ 的数据。当我似乎遇到不同类型的问题时,我决定编写一个小型测试应用程序来看看我如何处理断开连接。
我编写了这个测试应用程序,它执行以下操作:
- 连接Broker,重试直到成功
- 连接后创建队列。
- 使用此队列并将结果放入 python Queue.Queue(0)
- 从 Queue.Queue(0) 中获取项目并将其生成回代理队列。
我注意到有两个问题:
- 当我从一个连接到另一台主机(在 vm 内)上的 rabbitmq 的主机上运行我的脚本时,这个脚本会随机退出而不会产生错误。
- 当我在安装了 RabbitMQ 的同一主机上运行我的脚本时,它运行良好并继续运行。
这可能是因为网络问题,数据包丢失,尽管我发现连接不是很健壮。
当脚本在 RabbitMQ 服务器上本地运行并且我杀死 RabbitMQ 时脚本退出并出现错误:“ERROR pika SelectConnection: Socket Error on 3: 104”
所以看起来我无法让重新连接策略正常工作。有人可以看看代码,看看我做错了什么吗?
谢谢,
周杰伦
python - Pika RabbitMQ 客户端的异步消息处理
在Pika 定时接收示例之后,我想让客户端处理更多并发请求。我的问题是,如果每次收到新消息时都可以以某种方式调用handle_delivery而不是等待先前的 handle_delivery 返回?
python - 有没有办法通过 pika 列出 rabbitmq 中的队列?
我知道我们可以这样做来列出rabbitmq中的队列。
但我怎么能通过 pika 做到这一点?
python - 如何使用 pika 发送 utf-8 数据?
我正在尝试在 pika 上发布一个 unicode 字符串。当我发送它时,我收到以下消息:
环顾四周,似乎我必须使用 pika.BasicProperties 将字符集或内容类型设置为 UTF-8,但我找不到该类的文档。
我应该设置什么来发布 unicode 数据?
django - 使用 AMQP 在 Node.js 和 Django 之间传输对象
我从 websockets 开始,我对数字库和配置选项感到非常困惑。我只想设置一个项目,其中 node.js 服务器调用 python/django 中的方法,当最后一个完成时,它将结果传输回 node.js 服务器。这是我到目前为止所拥有的:
本教程中的 Nodes.js AMQP :
本教程中的 Django Celery :
我不知道这是否是要走的路,如果有人能阐明这个问题,我会很高兴。
---编辑
我成功地使用 AMQP 进行了简单的字符串传输:
测试.py
应用程序.js
});
不过,我不确定这是否是最好的实现,我什至没有在这里使用 queue.bind() 方法。当我尝试传递一个复杂的对象(json 甚至是一个简单的数组)时,就会出现问题。更改此行
导致以下错误:
有没有序列化复杂对象的解决方案?我错过了什么吗?
python - 超时无法通过 pika 发送。阻塞连接
我正在尝试编写一个客户端程序来从 rabbitmq 服务器接收,我想用它来设置超时。在指定的时间之后,客户端应该停止消费队列中的消息并退出。
我正在使用带有 Blocking connection 的 pika。我看到了阻塞连接中定义的 add_timeout(delay,callback) ,但是当我尝试使用它时,我收到以下错误,如下所示。
这是我的客户程序。我没有运行任何服务器来模拟超时条件。
如果我在指定的超时期限内收到消息,则客户端应该打印消息并且应该停止进一步消费。
谁能帮我如何在客户端设置超时?
python - How to deliver a response to a client after a Node.js server gets a message from a AMQP queue?
When a client makes a get request to '/test' a simple string is exchanged between node.js and python via AMQP, but I don't know how to transmit the response back to the client (since the process is async).
test.py
app.js
User request makes a publish to python, but how to reply it back to the user once it's finished?
(Note: I'm not sure if this is the best implementation. Hints, suggestions welcomed!)
python - RabbitMQ / Pika - 保证按创建的顺序接收消息?
作为一个简单的例子,我将 5 个项目添加到一个新的 RabbitMQ(v 2.6.1) 队列中:
我清除我的队列,然后运行上面的代码来添加 5 个项目:
现在,我正在尝试模拟失败的处理。给定以下代码以从队列中使用。请注意,我对 basic_ack 的调用已注释掉:
我运行接收代码以从队列中获取一个项目。正如我所料,我得到了第 1 项:
由于对 channel.basic_ack() 的调用被注释掉了,我希望将未确认的消息放在队列中,以便下一个消费者得到它。我希望消息 #1 是队列中的第一条消息(再次),并将 Redelivered 属性设置为 True。相反,收到消息 #2:
并且队列中的所有其他消息都在 #1 返回之前接收到,并将 Redelivered 标志设置为 True:
...
是否有任何属性或选项我可以设置,以便我一直收到 #1 直到它被确认?
我的用例是用顺序生成的文件加载数据仓库。我们正在使用基于消息的处理来让我的程序知道一些新文件已准备好并要加载到 DW 中。我们必须按照它们生成的顺序处理这些文件。
python - Sending message to RabbitMQ (pika) from scheduler callback doesn't work
I need different messages to be sent to the queue - each by its personal schedule. So I have message list and related interval to resend each one. I use rabbitMQ/pika and apscheduler. According to numerous examples, I created the simplest BlockingConnection/channel/queue. When immediately after that I try to push messages - everything works fine, I can see in rabbitmq web-interface that all the messages become in the queue. Here is the piece of code that works:
But if I try to push messages (in exactly same way) via apscheduler callback function - only few (about 1-10) messages appear in the queue (but callbacks are fired all the time and there are no any exception when publishing message!).
Finally I begin to receive such warnings:
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pika/connection.py:642: UserWarning: Pika: Write buffer exceeded warning threshold at 1125 bytes and an estimated 43 frames behind warn(message % (self.outbound_buffer.size, est_frames_behind))
and still no new messages in the queue.
I am new in python, any help is much appreciate.