20.5.4. 分页模式
当递送到某个地址的消息超过了指定的大小,该地址将进入分页模式(page/paging mode)。
注意
分页是针对单个地址的。如果您为某个地址配置了
max-size-bytes
,就表示每个匹配的地址将有这个最大尺寸的限制。然而,这并不意味着所有匹配的地址的总共大小被限制为 max-size-bytes
。
您可以在服务器配置文件(
standalone.xml
和 domain.xml
)里为某个地址配置最大字节数(max-size-bytes
)。
<address-settings> <address-setting match="jms.someaddress"> <max-size-bytes>104857600</max-size-bytes> <page-size-bytes>10485760</page-size-bytes> <address-full-policy>PAGE</address-full-policy> </address-setting> </address-settings>下表描述了地址设置的参数:
元素 | 默认值 | 描述 |
---|---|---|
max-size-bytes | 10485760 |
它用来指定进入分页模式前这个地址可以容纳的最大内存大小。
|
page-size-bytes | 2097152 |
它用来指定分页系统上每个分页文件的大小。
|
address-full-policy | PAGE |
这个属性的值用于分页决策。您可以设置为这些值:
PAGE :启用分页且将超过限额的消息转储在磁盘里,DROP :丢弃超过限制的消息,FAIL :丢弃消息并发送异常到客户消息生产者,BLOCK :当发送的消息超过限额时阻塞客户消息生产者。
|
page-max-cache-size | 5 |
系统将保持内存里的分页文件为
page-max-cache-size 以优化分页导航过程中的输入/输出。
|
重要
如果当到达最大大小时您不想将消息分页,您可以选择设置某个地址的
address-full-policy
为 DROP
、FAIL
和 BLOCK
分别来简单地丢弃消息、丢弃消息并在客户端抛出异常、或者阻止生产者发送更多的消息。在默认配置里,所有的地址都在达到 max-size-bytes
后开始对消息分页。
具有多个队列的地址
当消息被路由至某个绑定多个队列的地址时,这个消息在内存里只有一个备份。每个队列都只处理原始消息备份的引用。因此,只有当引用原始消息的所有队列已经递送消息后,内存才会被释放。
注意
单个的 lazy 队列/订阅可能降低整个地址的输入/输出性能,这是因为所有的队列都将消息通过分页系统上的额外存储进行发送。