说明
在上篇博文《RabbitMQ学习(十三):死信交换机》中,我对官方文档有关死信交换机的内容进行了翻译和学习,文中提到消息成为死信的原因有三种,队列长度的限制就是其中之一。本篇博文我将继续翻译学习官方文档中有关队列长度限制的相关的内容,通过本文记录学习总结有关队列长度限制如何设置,超出限制队列如何处理等内容。
正文
概述
队列的最大长度限制可以是限制消息的数量,或者是消息的总字节数(总字节数表示的是所有的消息体的字节数,忽略消息的属性和任何头部信息),又或者两者都进行了限制。
对于任意一个队列,队列的最大长度可以通过客户端在队列声明时使用队列的可选参数进行配置,也可以在服务器通过policy命令设置。如果同时使用这两种方式设置了队列的最大长度,那么其中较小的值将被使用。
队列长度也可以通过operator policies进行设置。
在所有情况中,只有处于ready状态的消息被计数,未被确认的消息不会被计数受到limit的限制。
来自rabbitmqctl list_queues命令或者管理API的两个字段值message_ready和message_bytes_ready显示了消息的限制数量值。