带有Websocket和Gevent的RabbitMQ

时间:2011-07-21 10:29:32

标签: websocket rabbitmq gevent

我期待使用Websocket为我的Web应用程序开发实时API。为此,我使用RabbitMQ作为代理,我的后端基于python(gevent + websocket),Pika / Puka作为rabbitmq客户端。

我面临的问题是,我们如何使用websocket连接rabbitMQ。在初始websocket连接建立之后,套接字对象等待来自客户端的新消息,并且在rabbitMQ的情况下,我们需要为它设置一个使用者,因此它将在收到消息时处理该消息。我们可以这样做,

  1. 客户端通过全双工websocket建立与服务器的连接。
  2. 所有客户端在初始websocket握手后都应该充当RabbitMQ的消费者,所以当客户端收到消息时,他们都会得到更新。
  3. 当新邮件到达websocket时,该客户端会将其发送给RabbitMQ,所以此时此客户端充当发布者。
  4. 问题是Websocket等待新消息,而RabbitMQ消费者在其频道上等待新消息,我无法链接这两种情况。

    我不确定这是否是一种错误的方法......

    我无法找到实现此方案的方法。如果我出错了或者有其他替代方法吗?请帮我解决这个问题。

    谢谢,

    Haridas N。

2 个答案:

答案 0 :(得分:1)

我使用Tornado + websocket + RabbitMQ + Pika实现了类似的要求。

我认为这是已知的方法。这是我对这个网络聊天应用程序的git repo。

https://github.com/haridas/RabbitChat

与gevent / twisted类似的事情似乎很难,因为rabbitMQ客户端无法支持gevent / twisted的事件循环。

鼠兔有龙卷风适配器,因此可以轻松设置。 Pika开发团队也在研究扭曲的适配器。我希望他们能尽快发布。

谢谢,

Haridas N。

http://haridas.in

答案 1 :(得分:0)

一个简单的解决方案是使用gevent.queue.Queue实例进行绿色间通信。