要从NodeJS发布者发布消息到RabbitMQ(已确认,持久)(我使用bramqp,但问题是通用的),应该是什么渠道池策略?
如果我创建一个巨大的池(20,000 +)并在每次需要发布时寻找一个免费频道,然后每当我得到确认(保留在空闲池中)时释放频道,然后在高负载下,确认延迟,因此会产生大量通道,导致RabbitMQ中的erlang进程快速增加,从而降低其性能。
如果我使用非常小的池或没有池进行管理,那么只要速率很高,就会抛出套接字错误,此时唯一的选择是重置整个连接。
这里的最佳做法是什么?
答案 0 :(得分:-1)
我不能说我理解你在做什么,但重要的是要理解通道是协议级构造。没有“通道池”这一点 - 当您开始与AMQP服务器交互时,它使用现有连接(如果可用)并通过在握手过程中为通道头分配整数值来创建新的“通道” 。也许你的程序实际上创建了很多连接?
我建议每次发布时都要执行以下操作: