如果RabbitMQ代理具有绑定到它的许多队列的扇出交换,队列是持久的并且传递给交换的消息是持久的/持久的,那么每个队列是否会为消息或代理存储单独的副本并优化排队的消息持久性,而不是为扇出中的每个队列多次存储有效负载,但存储消息链接/引用之类的东西?
答案 0 :(得分:0)
这取决于邮件的大小。使用持久性,接收消息的每个持久队列将具有引用该消息的队列索引。较大的消息(默认情况下,> = 4K)将写入消息存储库并由队列索引引用。因此,绑定到扇出交换的每个队列都将具有该消息的队列索引,但消息存储中只有一个副本位于消息存储中。
较小的消息将完全存储在队列索引中,消息存储中没有条目。如果您的扇出交换收到一条小消息,那么每个绑定队列将拥有自己的整个消息副本。
可以在https://www.rabbitmq.com/persistence-conf.html找到RabbitMQ消息持久性的一个很好的解释。