2.2. 消息持久性
AMQ Broker 会保留消息数据以确保信息永不会丢失,即使代理失败或意外关闭也是如此。AMQ 代理提供两种消息持久性选项:基于日志的持久性和数据库持久性。
基于日志的持久性
默认方法,此选项将消息数据写入文件系统中存储的日志文件。最初,每个日志文件都使用固定大小自动创建,并填充空数据。当客户端执行各种代理操作时,记录将附加到日志中。当其中一个日志文件已满时,代理将移动到下一个日志文件。
基于日志的持久性支持事务操作,包括本地和 XA 事务。
基于日志的持久性需要文件系统的 IO 接口。AMQ Broker 支持以下内容:
- Linux 异步 IO(AIO)
- AIO 通常提供最佳的性能。确保您的网络文件系统在 Red Hat AMQ 7 支持的配置 中被列为支持。
- Java NIO
- Java NIO 提供了良好的性能,它可以在任何具有 Java 6 或更高版本运行时的平台中运行。
数据库持久性
此选项通过使用 Java 数据库连接(JDBC)将消息和绑定数据存储在数据库中。如果您的环境中已有可靠和高性能的数据库平台,或者公司政策强制使用数据库,则此选项是一个不错的选择。
代理 JDBC 持久存储使用标准 JDBC 驱动程序来创建 JDBC 连接,它将消息和绑定数据存储在数据库表中。数据库表中的数据采用与基于日志的持久性相同的编码方式进行编码。这意味着,如果直接使用 SQL 访问数据库中存储的消息,则不会被人读取。
要使用数据库持久性,您必须使用受支持的数据库平台。要查看当前支持的数据库平台,请参阅 Red Hat AMQ 7 支持的配置。