【问题标题】:Clustered chat implementation based on Queue基于Queue的集群聊天实现
【发布时间】:2011-10-06 11:36:05
【问题描述】:

我正在研究聊天实现。这个想法非常简单,其中键是用户名,值是应该传递给用户的消息队列

这张地图由ConcurrentHashMap<String, <ConcurrentLinkedQueue<Message>>>表示

当用户的新消息到达时,它被写入此映射,每个用户使用简单的 http 池从队列中获取他们的消息。这种方法效果很好。

现在我需要在集群中实现类似的功能。对于缓存复制,我使用 jboss 缓存。现在缓存复制以同步方式工作。这意味着在写入其他节点之前不会在本地节点上写入缓存。

基本上缓存接口看起来类似于带有 put 和 get 方法的 map。

现在我会复制整个队列。当新消息到达时,我从地图中获取队列,在队列中添加新消息并在所有节点上“放置”(重写)新队列。

当用户请求获取新消息以克隆当前队列时,将与该用户关联的队列在所有节点上清空,并将消息从克隆队列传递给用户。

我觉得有很多情况可能会出错。例如,我将消息放在节点 A 的队列上,队列的复制开始,现在另一个节点 B 上的用户从队列中获取消息,使队列为空。稍后从节点 A 复制队列完成,节点 B 再次收到已传递的消息。用户两次收到相同的消息

在集群中实现此消息例程的常用方法是什么?

【问题讨论】:

    标签: java chat cluster-computing jboss-cache


    【解决方案1】:

    简而言之,消息传递。您可以基于 JMS 自行滚动,或使用 Enterprise Service Bus

    【讨论】:

      猜你喜欢
      • 2011-05-12
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2015-02-23
      • 2012-07-07
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      相关资源
      最近更新 更多