6.3. 配置 JDBC 持久性
JDBC 持久性存储使用 JDBC 连接在数据库表中存储消息和绑定数据。表中的数据使用 AMQ Broker 日志编码。有关支持的数据库的详情,请查看红帽客户门户网站中的 Red Hat AMQ 7 支持的配置。
注意
管理员可以根据组织的更广泛的 IT 基础架构要求,将消息传递数据存储在数据库中。但是,使用数据库可能会对消息传递系统的性能造成负面影响。具体来说,通过 JDBC 将消息传递数据写入数据库表,可为代理带来显著的性能开销。
步骤
-
将适当的 JDBC 客户端库添加到代理运行时。您可以将相关的 jar 添加到
BROKER_INSTANCE_DIR/lib
目录中。 在
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 毫秒。