实时聊天,不想丢消息——用队列(redis、zeromq)?

Posted

技术标签:

【中文标题】实时聊天,不想丢消息——用队列(redis、zeromq)?【英文标题】:Real-time chat, don't want to lose messages - use queue (redis, zeromq)? 【发布时间】:2012-09-23 14:03:40 【问题描述】:

我有一个可以进行实时聊天的应用程序。聊天是在客户端和服务器端(nodejs)使用 Faye 实现的。

现在这个客户端聊天用于 Rails 应用程序,当我的页面重新加载/刷新时,我不想丢失可能在以下情况下发生的消息:

我重新加载页面 我从数据库中获取聊天记录 聊天另一端的用户写了 5 行 我渲染页面 我缺少 5 条最近的记录

我想听听您对解决这个问题的意见。我想到了一个消息队列之类的东西,其中未传递给客户端的消息将在那里等待,稍后在页面启动时通过 javascript 获取。

如果有人确认消息队列非常适合使用 zeromq 或在我已经使用的 redis 中实现简单队列(不想要很多技术),我也想征求您的意见。

【问题讨论】:

【参考方案1】:

Redis 具有令人印象深刻的队列功能、发布/订阅系统等选择。另一方面,ZeroMQ 更像是分布式应用程序的 IPC 层,您必须在其上实现任何高级抽象。这就像比较 HTTP 和 TCP。

【讨论】:

谢谢。猜猜redis毕竟更合适。

以上是关于实时聊天,不想丢消息——用队列(redis、zeromq)?的主要内容,如果未能解决你的问题,请参考以下文章

用redis实现消息队列(实时消费+ack机制)

用redis实现消息队列(实时消费+ack机制)

分析 Redis 是否适合作为消息队列

Redis实现聊天功能

(实用篇)php redis提高消息队列的实时性方法

(转)java redis使用之利用jedis实现redis消息队列