实时聊天,不想丢失消息 - 使用队列(redis,zeromq)?

时间:2012-10-02 17:13:00

标签: ruby-on-rails node.js chat real-time message-queue

我有一个应用程序,其中有一些实时聊天。聊天是在客户端和服务器端(nodejs)使用Faye实现的。

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

  • 我重新加载页面
  • 我从DB
  • 获取聊天记录
  • 聊天另一边的用户写了5行
  • 我渲染页面
  • 我缺少5条近期记录

我想听听你对解决这个问题的看法。我有一个类似于消息队列的东西,其中未传递给客户端的消息只会在那里等待,并且在页面通过javascript启动时稍后会被提取。

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

1 个答案:

答案 0 :(得分:2)

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