RabbitMQ queue disk space fanout exchange场景使用
RabbitMQ queue disk space usage in fanout exchange scenario
如果 RabbitMQ 代理有一个扇出交换并绑定了许多队列,其中队列是持久的并且传递到交换的消息是 durable/persisted,每个队列是否会为消息存储一个单独的副本或代理可能会找出并优化排队消息的持久性,而不是在扇出中为每个队列多次存储有效负载,而是存储类似 message links/references?
的内容
这取决于消息的大小。有了持久性,每个接收消息的持久队列都会有一个引用该消息的队列索引。较大的消息(默认情况下 >= 4K)将写入消息存储并由队列索引引用。因此,绑定到您的扇出交换器的每个队列都将有一个消息队列索引,但只有一个消息负载副本位于消息存储中。
较小的消息将完全存储在队列索引中,消息存储中没有条目。如果您的扇出交换器收到一条小消息,那么每个绑定队列都会有自己的整个消息副本。
可以在 https://www.rabbitmq.com/persistence-conf.html 找到关于 RabbitMQ 消息持久性的很好解释。
如果 RabbitMQ 代理有一个扇出交换并绑定了许多队列,其中队列是持久的并且传递到交换的消息是 durable/persisted,每个队列是否会为消息存储一个单独的副本或代理可能会找出并优化排队消息的持久性,而不是在扇出中为每个队列多次存储有效负载,而是存储类似 message links/references?
的内容这取决于消息的大小。有了持久性,每个接收消息的持久队列都会有一个引用该消息的队列索引。较大的消息(默认情况下 >= 4K)将写入消息存储并由队列索引引用。因此,绑定到您的扇出交换器的每个队列都将有一个消息队列索引,但只有一个消息负载副本位于消息存储中。
较小的消息将完全存储在队列索引中,消息存储中没有条目。如果您的扇出交换器收到一条小消息,那么每个绑定队列都会有自己的整个消息副本。
可以在 https://www.rabbitmq.com/persistence-conf.html 找到关于 RabbitMQ 消息持久性的很好解释。