我在生产系统中使用pika,并且已经注意到BlockingConnection和SelectConnection在这里和那里都没有发生明显的错误或警告。不幸的是,我无法发布代码,但希望征求其他可能遇到此类行为的用户的任何指导或轶事。我听说RabbitMQ非常稳定,所以我开始质疑pika的可靠性,并怀疑是否有更多的可信任选择?Python pika库零星的行为,丢弃消息
1
A
回答
1
我怀疑你可能看到的问题与basic.publish
的定义方式有关。它总是成功。在发生错误(或成功)的情况下,不会有任何来自服务器的流量。
解决这个便携式的办法是包装在一个事务发布:
channel.tx_select()
channel.basic_publish(exchange='foo', ...)
channel.tx_commit()
的tx_commit()
的通话将迫使服务器与tx.commitok回应一旦成功处理了所有的行动就已收到。你的应用程序应该等到tx.commit
成功;那么你可以确定发送的所有消息都是成功的。
略小便携性是rabbitmq特定扩展channel.select
,它使服务器以basic.ack
响应。尽管如此,恐怕我从来没有这种功能与pika的BlockingConnection
一起工作,但你可能会获得更好的成功。
相关问题
- 1. 用Pika 0.9.5发送大量消息给RabbitMQ:消息悄悄被兔子丢弃
- 2. 的Python telnetlib telnet.write()丢弃消息
- 3. 在netty中丢弃消息
- 4. SpringIntegration中丢弃的消息在哪里?
- 5. JQuery UI:取消可丢弃丢弃
- 6. 如何删除rabbitmq中的消息(pika)
- 7. WebRTC:数据通道丢弃消息?
- 8. 终端服务丢弃消息
- 9. 死信交换RabbitMQ丢弃消息
- 10. sharedDeadLetterStrategy不会丢弃DLQ消息
- 11. 丢弃rabbitmq消息没有人在听
- 12. JeroMq丢弃消息 - 如何防止?
- 13. 因为太多未处理的消息而丢弃事件0的消息
- 14. 强行丢弃Python图像库的图像回收内存
- 15. 取消节点丢弃
- 16. 丢弃流星中的Mongo数据库收集
- 17. 彗星的Python消息缓存?
- 18. Python Pika - 消费者进入线程
- 19. 消耗两个队列rabbitmq pika python
- 20. 如何测量丢弃的UDP消息的数量?
- 21. PHP Excel导出丢弃前导零
- 22. SQL导入向导丢弃前导零
- 23. Netty + NioDatagram(UDP)+ ProtoBuf问题 - 丢弃的入站消息DatagramPacket
- 24. 如何在Netty 4中的MessageToMessageDecoder中丢弃/释放消息
- 25. MSMQ事件记录不显示丢弃的消息?
- 26. 如何使用Java/JMS丢弃队列中的消息?
- 27. Netty 4 - 丢弃管道的出站消息
- 28. 在ZeroMQ队列中检测丢弃的消息
- 29. 关系数据库与类似缓存的丢弃行为
- 30. RabbitMQ/Pika - 保证以创建的顺序收到消息?
我非常感谢您的见解,谢谢!但是,现在我已经按照你的建议包装了这个调用,我得到这个错误:ERROR - base_connection.py:_handle_error - SelectConnection:Socket被关闭....尽管应用程序能够继续。有没有一些自动重新连接,我没有看到? – Fred 2012-07-24 12:57:02
'能够继续吗?'这意味着什么,就是说,默认的NullReconnectingStrategy在连接关闭时不做任何事情(你只是'down')你可能想要提供一个不同的策略,或者使用'Connection.add_on_close_callback()'' – SingleNegationElimination 2012-07-24 17:14:40
'添加一些额外的回调因此,经过进一步的分析,我设法解决了这个错误......我想。发生的事情是,我们有两个生产者写入同一个交换机并将消息存储在同一个队列中。有一位消费者将这些消息放入一个数据库 - 这样实际上是一个2-feeding-1类型的消息传递设置。如果我发送200条消息,每条消息100条,其中一条总是能够发送所有消息,而另一条则以某种方式截断。所以,我看到100和12,或100和61,但一个总是能够完全成功,而另一个不是。思考?我非常感谢你在这方面的时间。 – Fred 2012-07-25 13:08:36