2011-03-09 18 views
1

我可以用一個簡化版本的例子來最好地描述我正在尋找的東西。其中一個演示,龍捲風是一個簡單的聊天服務器:彗星的Python消息緩存?

https://github.com/facebook/tornado/blob/master/demos/chat/chatdemo.py

我感興趣的是這裏的MessageMixin類。它保留了消息的靜態長度積壓,並且當新消息可用時,它返回新消息列表的切片。或者這就是它所做的。我知道在編寫一個簡單的彗星應用程序之前,我已經實現了類似的東西。

所以有人推測這一點,並添加了花哨的東西呢?我特別感興趣的是管理多種溝通渠道,並刪除那些尚未使用過的渠道。持久性也可能有用。

這是MQ可以做的事嗎?

+0

您可以添加一些關於您的預期用例的更多信息嗎?就目前而言,您的解決方案可能包含從數據庫到XMPP的基於時間的查找與某種pub/sub實現之間的任何操作。 – 2011-03-13 17:01:30

+0

與用戶按需創建的多個頻道進行聊天,未使用的頻道在沒有新消息的時段之後消失。數據庫中基於時間的查找聽起來不錯,但如果客戶端正在等待新消息,它將如何得到通知? – 2011-03-13 22:44:36

回答

3

Redis有一個publish/subscribe功能,以及其他data structure-oriented commands,您可以使用它來保留和過期消息積壓,列出給定房間中的用戶或與其關聯的其他屬性。該協議是基於文本的,是Memcached命令的超集。

這是一個描述,它使用chat as an example of pub/subRuby example using Websocket,以及Python中的一個片段,它使用Websocket, Tornado and Redis pub/sub來實現一個簡單的聊天室。

根據您提問中的信息,專門的消息隊列(如RabbitMQ)也可能對您有用。如果不知道在消息容量,容錯,複製等方面需要什麼,很難說.Redis也可能是您正在尋找的內容,但如果沒有其他內容,它就非常簡單並且可以幫助您獲得原型快速運行以進一步確定應用程序的要求。

+0

謝謝。 Redis看起來很完美。不知道它做了pub/sub。 – 2011-03-14 11:05:38