Rabbitmq 为每个用户提供多个频道

问题描述 投票:0回答:0

需要:

  • 每个用户必须创建多个频道并长期保持开启才能接收消息
  • 每个用户必须有一个免费频道才能发送消息(频道快速打开和关闭)

Rabbit Doc:一个频道最多可以打开多少个 客户端和服务器同时协商连接 连接时间。客户端无法配置为允许更多 通道数超过服务器配置的最大值。强烈建议限制每个连接使用的通道数。作为指导,大多数应用程序可以在每个连接中使用个位数的通道。

这个类似于一个Mongo连接池,1个tcp连接和多个连接(mongo)/channels(rabbit)来操作。但是对于兔子来说是有限制的,而且频道会长期开放。

我该怎么做?我只能想到2个方法:

-1- 为每个用户创建一个与 rabbitmq 的 tcp 连接。它消耗大量资源,但每个用户都获得了多个接收通道和一个免费发送通道

2 - 创建类似于连接池的东西并重用连接。不知道要开多少个tcp连接,也不知道哪些频道是免费的

应用程序是聊天:

  1. Exchange -> 代表房间/私人
  2. 1 个队列 + 1 个频道 -> 从房间/私人接收消息
  3. 发送消息:快速打开和关闭频道

使用来自房间/私人(交换)的消息的代码。频道保持开放:

channel.consume(queue, message => {
    if (message !== null) {
        io.to(socketId).emit(socketEvent, message.content.toString());
        channel.ack(message);
 } else {
        console.log('Consumer Queue - Empty message received')
    }
}, {
    noAck: isNoAck
})
rabbitmq chat
© www.soinside.com 2019 - 2024. All rights reserved.