检索和发布消息的协议(没有pub / sub的消息队列)

时间:2011-03-30 05:05:59

标签: python email scalability message-queue messaging

是否有消息传递解决方案(最好是支持Python),我可以像邮箱一样使用,例如从任何给定的队列中检索消息而不必订阅?我想消息队列可以工作,但我必须重复订阅,从队列中获取消息,然后取消订阅,这听起来不是最佳。

3 个答案:

答案 0 :(得分:0)

有很多选择。这是两个:

  1. 看看Redis。它有两个Python客户端库(请参阅redis-pytxRedis)。您可以通过在Redis中的列表上执行blpop来模拟您描述的操作(队列上的类似邮箱的操作)。

  2. 另一个选项是RabbitMQ。它有相当多的Python客户端库py-ampqlibtxAMQP。您可以通过执行basic.getbasic.ack将此视为类似邮箱的队列(有关详情,请参阅this reference)。

答案 1 :(得分:0)

RabbitMQ - http://www.rabbitmq.com

ZeroMQ - http://www.zeromq.org

亚马逊SQS - http://aws.amazon.com/sqs

这三个都有python库。 前两个是免费的。如果您不发送和接收数百万条消息,SQS成本非常低,并且它具有高可用性的优势,使您无需自己托管管理它。

关于订阅和取消订阅,如果您从队列中拉出而不是让队列向您推送消息(pub / sub),那么您不会订阅和取消订阅。在上面的所有示例中,您不会产生任何开销。

答案 2 :(得分:0)

大多数(如果不是全部)消息传递解决方案支持两种消息传递模式

  • 发布\订阅 - 也就是说,您需要订阅才能收到消息。

  • 排队 - 一方向队列发送消息,另一方从队列中读取消息 - 无需订阅,消息在读取时消耗。

实际上,标准排队比发布订阅更常见 - 你有更好的机会找到支持排队的工具,但不是pub \ sub,然后找到一个支持pub \ sub但不排队的工具。

您可能正在寻找第二种模式