第 6 章 持久性消息


本章论述了持久性如何与 AMQ Broker 合作以及如何配置它。

代理随附两个持久性选项:

  1. 基于 journal

    默认值。将消息写入文件系统中日志的高性能选项。

  2. JDBC-based

    使用代理的 JDBC 存储将消息保留到您选择的数据库中。

另外,您还可以 为零持久性配置代理

代理使用不同的解决方案来持久保留消息日志外的大信息。如需更多信息,请参阅使用大型消息。代理也可以配置为在内存不足的情况下将消息记录到磁盘。如需更多信息 ,请参阅 和管理消息。

注意

有关支持哪些数据库和网络文件系统的当前信息,请参阅红帽客户门户网站中的 Red Hat AMQ 7 支持的配置

6.1. 关于基于日志的持久性

代理的日志是仅 附加磁盘上的文件 集合。每个文件预先创建为固定的大小,最初使用 padding 填充。当消息传递操作在代理上执行时,记录会附加到日志末尾。附加记录可让代理最小化磁盘头移动和随机访问操作,这通常是磁盘上的最慢的操作。当一个日志文件已满时,代理会使用一个新的日志文件。

日志文件的大小可配置,从而最大程度减少每个文件所使用的磁盘柱面的数量。但是,现代磁盘拓扑比较复杂,代理无法控制该文件所映射到的柱面。因此,日志文件大小并非精确的科学。

其他与持久性相关的功能包括:

  • 确定特定日志文件仍在使用中的复杂文件垃圾回收算法。如果没有,可以回收并重新使用该文件。
  • 一个紧凑算法,它从日志中删除死空间,并压缩数据。这会导致日志使用较少的磁盘上的文件。
  • 支持本地事务。
  • 在使用 AMQ JMS 客户端时支持 XA 事务。

大多数日志使用 Java 编写。但是,抽象与实际文件系统的交互是抽象的,因此您可以使用不同的、可插拔式的实现。AMQ Broker 附带两个实现:

  • Java NIO.

    使用标准 Java NIO 与文件系统接口。这可提供极好的性能,并在带有 Java 6 或更高版本运行时的任何平台上运行。

  • Linux Asynchronous IO

    使用精简原生打包程序与 Linux 异步 IO 库(AIO)进行通信。使用 AIO 时,代理会在数据变为磁盘后调用,避免完全进行显式同步。默认情况下,代理尝试使用 AIO 日志,并在 AIO 不可用时回退到使用 NIO。

    使用 AIO 时的性能优于使用 Java NIO 时。有关如何安装 libaio 的说明,请参阅使用 AIO 日志

注意

有关支持哪些网络文件系统的当前信息,请参阅红帽客户门户网站中的 Red Hat AMQ 7 支持的配置

6.1.1. 使用 AIO

Java NIO 日志非常高性能,但如果您正在运行使用 Linux 内核 2.6 或更高版本的代理,红帽建议使用 AIO 日志来提高性能。不可与其它操作系统或早期版本的 Linux 内核一起使用 AIO 日志。

要使用 AIO 日志,如果 libaio 尚未安装,则必须安装 libaio。

步骤

  • 使用 yum 命令安装 libaio,如下例所示:
yum install libaio
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.