10.2. 使用默认文件日志的消息传递日志持久性

JBoss EAP 消息传递附带了高性能、基于文件的日志,针对消息传递进行了优化。

JBoss EAP 消息传递日志具有可配置的文件大小且仅附加,这可通过启用单写操作来提高性能。它由磁盘上的一组文件组成,这些文件最初会预先创建成固定大小并填写 padding。在执行添加消息、删除消息和更新消息等服务器操作时,操作的记录将附加到日志中,直到日志文件已满,此时使用下一个日志文件。

复杂的垃圾收集算法决定了在所有数据都被删除后是否可以回收和重新使用日志文件。紧凑算法从日志文件中删除死空间并压缩数据。

日志还完全支持本地和 XA 事务。

10.2.1. 消息传递日志文件系统实施

大多数日志用 Java 编写,但已提取了与文件系统的交互,以允许不同的可插拔实施。JBoss EAP 消息传递随附两种实施为:

Java 新 I/O(NIO)
此实施使用标准 Java NIO 与文件系统接口。它提供了极其良好的性能,并在具有 Java 6 或更高版本运行时的任何平台上运行。请注意,JBoss EAP 7 需要 Java 8。JBoss EAP 支持的任何操作系统上均支持使用 NIO。
Linux 异步 IO(ASYNCIO)

此实施使用原生代码打包程序与 Linux 异步 IO 库(ASYNCIO)对话。此实施消除了显式同步的需求。ASYNCIO 通常比 Java NIO 提供更好的性能。

要检查使用哪些日志类型,请发出以下 CLI 请求:

/subsystem=messaging-activemq/server=default:read-attribute(name=runtime-journal-type)

系统返回以下值之一:

表 10.1. 日志类型返回值

返回值描述

NONE

持久性被禁用

NIO

Java NIO 正在使用

ASYNCIO

使用 libaio 的 ASY NCIO

数据库

使用了 JDBC 持久性

使用 libaio 原生时,以下文件系统已经过测试,且仅在 Red Hat Enterprise Linux 6、Red Hat Enterprise Linux 7 和 Red Hat Enterprise Linux 8 中被支持。它们未经测试,在其他操作系统中不受支持。

  • EXT4
  • XFS
  • NFSv4
  • GFS2

下表列出了已经测试的 HA 共享存储文件系统,包括 libaio 原生和未测试的 HA 共享存储文件系统,以及是否被支持。

操作系统文件系统支持使用 libaio 原生选项?
(journal-type="ASYNCIO")
不支持使用 libaio Natives?
(journal-type="NIO")

Red Hat Enterprise Linux 6

NFSv4

Red Hat Enterprise Linux 7 及更新的版本

NFSv4

Red Hat Enterprise Linux 6

GFS2

Red Hat Enterprise Linux 7 及更新的版本

GFS2