20.5.4. 分页模式
当递送到某个地址的消息超过了指定的大小,该地址将进入分页模式(page/paging mode)。
注意
分页是针对单个地址的。如果您为某个地址配置了
max-size-bytes,就表示每个匹配的地址将有这个最大尺寸的限制。然而,这并不意味着所有匹配的地址的总共大小被限制为 max-size-bytes。
您可以在服务器配置文件(
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
下表描述了地址设置的参数:
standalone.xml 和 domain.xml)里为某个地址配置最大字节数(max-size-bytes)。
| 元素 | 默认值 | 描述 |
|---|---|---|
| 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 队列/订阅可能降低整个地址的输入/输出性能,这是因为所有的队列都将消息通过分页系统上的额外存储进行发送。