呃,Exchange 并不是为了应对流量的,它只是为了 Producer/Comsuer 跟 Queue 之间解耦。
比如现在有一个记录日志的需求,并且日志有级别之分,其中我们想要所有日志都打印到控制台上,但只有 Warning 以上级别的日志会记录到磁盘中。那么我们就可以设计两个 Queue,分别管控制台输出和磁盘存储,上面有一个 Exchange 会按日志级别的规则给这俩 Queue 转发,而 Producer/Comsuer 只跟这个 Exchange 打交道就可以了,不用分别往俩 Queue 里发、从俩 Queue 里收。
至于性能瓶颈,并不在于 Exchange 下有多少个 Queue,并发量和消费速度才是首要的两个性能指标,消息堆积造成的性能影响才是最可怕的。你会看到所有的性能测评,都是当消费者出现异常甚至干脆不消费了,性能才急剧下降,并没有说 Exchange 多了或者 Queue 多了有啥影响。
至于 Exchange 和 Queue 的数量关系,具体场景具体分析,没有啥所谓最佳实践可言。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…