Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
339 views
in Technique[技术] by (71.8m points)

rabbitmq实践中建立交换机如何确定个数好?

由于消费者是在队列上进行消费,生产者发送消息也是发送到队列上,感觉无论多少队列,一个交换机都能搞定,但是这样肯定不是最佳实践

建立交换机的最佳实践是什么?譬如一个交换机最多几个队列好?队列如果流量大,是不是交换机拆分成几个好?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

呃,Exchange 并不是为了应对流量的,它只是为了 Producer/Comsuer 跟 Queue 之间解耦。

比如现在有一个记录日志的需求,并且日志有级别之分,其中我们想要所有日志都打印到控制台上,但只有 Warning 以上级别的日志会记录到磁盘中。那么我们就可以设计两个 Queue,分别管控制台输出和磁盘存储,上面有一个 Exchange 会按日志级别的规则给这俩 Queue 转发,而 Producer/Comsuer 只跟这个 Exchange 打交道就可以了,不用分别往俩 Queue 里发、从俩 Queue 里收。

至于性能瓶颈,并不在于 Exchange 下有多少个 Queue,并发量和消费速度才是首要的两个性能指标,消息堆积造成的性能影响才是最可怕的。你会看到所有的性能测评,都是当消费者出现异常甚至干脆不消费了,性能才急剧下降,并没有说 Exchange 多了或者 Queue 多了有啥影响。

至于 Exchange 和 Queue 的数量关系,具体场景具体分析,没有啥所谓最佳实践可言。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...