在Node.JS上的Socket.io之间实现一个队列

我已经使用Node.JS和Socket.io写了一个聊天。 聊天很简单:总是有两个人的房间,一个员工和一个客户。

现在我们的容量正在成长,我们正面临一些问题,如networking问题上的消息“消失”,我们希望在我们公司和我们的客户之间实现一个排队。

就像是:

在这里输入图像描述

对于图片上的每个NodeJS进程,我们有6个虚拟机位于负载均衡之后。 我想知道什么是使用队列的最佳方法。

我应该在每个房间的队列中创build一个主题吗? 例如:对于用户C和D之间的交互,它将使用消息/ c:d ; 对于用户A和B之间的交互,它将使用消息/ a:b

或者最好使用没有任何主题的单个队列,发布/订阅消息中的所有消息并为每个订户进行广播? 如果订户有房间,他将处理该消息。

在第一种方法中,我不确定我应该如何使用MQ客户端,因为我通常初始化它们并让它运行。 当我想要创build一个caching来存储MQClient时,每个客户端将负责一个主题,在我的脑海里听起来很奇怪 – 如果我有10k个房间,我将有10k个MQclient。