6.3. 配置 JDBC 持久性


JDBC 持久性存储使用 JDBC 连接在数据库表中存储消息和绑定数据。表中的数据使用 AMQ Broker 日志编码。有关支持的数据库的详情,请查看红帽客户门户网站中的 Red Hat AMQ 7 支持的配置

注意

管理员可以根据组织的更广泛的 IT 基础架构要求,将消息传递数据存储在数据库中。但是,使用数据库可能会对消息传递系统的性能造成负面影响。具体来说,通过 JDBC 将消息传递数据写入数据库表,可为代理带来显著的性能开销。

步骤

  1. 将适当的 JDBC 客户端库添加到代理运行时。您可以将相关的 jar 添加到 BROKER_INSTANCE_DIR/lib 目录中。
  2. BROKER_INSTANCE_DIR/etc/broker.xml 配置文件中创建 storage 元素,如下例所示。

    <configuration>
      <core>
        <store>
           <database-store>
              <jdbc-connection-url>jdbc:oracle:data/oracle/database-store;create=true</jdbc-connection-url>
              <jdbc-user>ENC(5493dd76567ee5ec269d11823973462f)</jdbc-user>
              <jdbc-password>ENC(56a0db3b71043054269d11823973462f)</jdbc-password>
              <bindings-table-name>BINDINGS_TABLE</bindings-table-name>
              <message-table-name>MESSAGE_TABLE</message-table-name>
              <large-message-table-name>LARGE_MESSAGES_TABLE</large-message-table-name>
              <page-store-table-name>PAGE_STORE_TABLE</page-store-table-name>
              <node-manager-store-table-name>NODE_MANAGER_TABLE</node-manager-store-table-name>
              <jdbc-driver-class-name>oracle.jdbc.driver.OracleDriver</jdbc-driver-class-name>
              <jdbc-network-timeout>10000</jdbc-network-timeout>
              <jdbc-lock-renew-period>2000</jdbc-lock-renew-period>
              <jdbc-lock-expiration>20000</jdbc-lock-expiration>
              <jdbc-journal-sync-period>5</jdbc-journal-sync-period>
           </database-store>
        </store>
      </core>
    </configuration>
    jdbc-connection-url
    您的数据库服务器的完整 JDBC 连接 URL。连接 URL 应包含所有配置参数和数据库名称。
    jdbc-user
    您的数据库服务器的加密用户名。有关加密用户名和密码以在配置文件中使用的详情,请参考 第 5.9 节 “在配置文件中加密密码”
    jdbc-password
    为数据库服务器的加密密码。有关加密用户名和密码以在配置文件中使用的详情,请参考 第 5.9 节 “在配置文件中加密密码”
    bindings-table-name
    绑定数据存储在的表的名称。指定此表名称可让您在多个服务器之间共享单个数据库,而不会干扰。
    message-table-name
    存储消息数据的表的名称。指定此表名称可让您在多个服务器之间共享单个数据库,而不会干扰。
    large-message-table-name
    存在大量消息和相关数据的表的名称。另外,如果客户端在块中流 a大消息,则块会存储在这个表中。指定此表名称可让您在多个服务器之间共享单个数据库,而不会干扰。
    page-store-table-name
    存储目录信息的表的名称。指定此表名称可让您在多个服务器之间共享单个数据库,而不会干扰。
    node-manager-store-table-name
    共享存储高可用性(HA)锁定实时和备份代理的表的名称以及其他与 HA 相关的数据存储在代理服务器上。指定此表名称可让您在多个服务器之间共享单个数据库,而不会干扰。使用共享存储 HA 的每个实时备份对必须使用相同的表名称。您不能在多个(和不相关的)实时备份对之间共享相同的表。
    jdbc-driver-class-name
    JDBC 数据库驱动程序的完全限定域名。有关支持的数据库的详情,请查看红帽客户门户网站中的 Red Hat AMQ 7 支持的配置
    jdbc-network-timeout
    JDBC 网络连接超时,以毫秒为单位。默认值为 20000 毫秒。当使用 JDBC 进行共享存储 HA 时,建议将超时设置为小于或等于 jdbc-lock-expiration 的值。
    jdbc-lock-renew-period
    当前 JDBC 锁定续订周期的长度(以毫秒为单位)。当这段时间过时,代理可以续订锁定。默认值为 2000 毫秒。
    jdbc-lock-expiration
    毫秒内,当前的 JDBC 锁定被视为已激活,即使 jdbc-lock-renew-period 已被弃用。如果将此属性设置为大于 jdbc-lock-renew-period 的值,可确保如果锁定的代理在续订时遇到意外延迟,则不会立即丢失锁定。过期时间后,如果 JDBC 锁定未被当前拥有它的代理续订,则其他代理可以建立 JDBC 锁定。默认值为 20000 毫秒。
    jdbc-journal-sync-period
    持续时间(以毫秒为单位),代理日志与 JDBC 同步。默认值为 5 毫秒。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.