6.2.2. 配置 JDBC 连接池
如果您已经为 JDBC 持久性配置了代理,代理将使用 JDBC 连接将消息和绑定数据存储在数据库表中。
如果 JDBC 连接失败,并且只要发生故障时没有活动的连接活动(如数据库读取或写入),代理将继续运行,并尝试重新建立数据库连接。为实现这一目标,AMQ Broker 使用 JDBC 连接池。
通常,连接池 提供一组开放连接,可以与多个应用之间共享的指定数据库。对于代理,如果代理与数据库之间的连接失败,代理会尝试使用来自池的不同连接重新连接到数据库。池在代理接收新连接前测试它。
下例演示了如何配置 JDBC 连接池。
如果您没有明确配置 JDBC 连接池,代理将使用带有默认配置的连接池。默认配置使用现有 JDBC 配置中的值。如需更多信息,请参阅 默认连接池配置。
先决条件
- 本示例基于配置 JDBC 持久性的示例。请查看 第 6.2.1 节 “配置 JDBC 持久性”
要启用连接池,AMQ Broker 使用 Apache Commons DBCP 软件包。在为代理配置 JDBC 连接池之前,您应该熟悉此软件包提供的内容。如需更多信息,请参阅:
流程
-
打开
<broker-instance-dir>/etc/broker.xml
配置文件。 在您之前为 JDBC 配置添加的
database-store
元素中,删除jdbc-driver-class-name,
jdbc-connection-url,
jdbc-user,
jdbc-password,
参数。在此过程稍后,您将用对应的 DBCP 配置参数替换它们。注意如果您没有显式删除前面的参数,则优先选择您在此流程中添加的对应的 DBCP 参数。
在
database-store
元素内,添加data-source-properties
元素。例如:<store> <database-store> <data-source-properties> </data-source-properties> <bindings-table-name>BINDINGS</bindings-table-name> <message-table-name>MESSAGES</message-table-name> <large-message-table-name>LARGE_MESSAGES</large-message-table-name> <page-store-table-name>PAGE_STORE</page-store-table-name> <node-manager-store-table-name>NODE_MANAGER_STORE</node-manager-store-table-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>
在新的
data-source-properties
元素内,为连接池添加 DBCP 数据源属性。指定键值对。例如:<store> <database-store> <data-source-properties> <data-source-property key="driverClassName" value="com.mysql.jdbc.Driver" /> <data-source-property key="url" value="jdbc:mysql://localhost:3306/artemis" /> <data-source-property key="username" value="ENC(5493dd76567ee5ec269d1182397346f)"/> <data-source-property key="password" value="ENC(56a0db3b71043054269d1182397346f)"/> <data-source-property key="poolPreparedStatements" value="true" /> <data-source-property key="maxTotal" value="-1" /> </data-source-properties> <bindings-table-name>BINDINGS</bindings-table-name> <message-table-name>MESSAGES</message-table-name> <large-message-table-name>LARGE_MESSAGES</large-message-table-name> <page-store-table-name>PAGE_STORE</page-store-table-name> <node-manager-store-table-name>NODE_MANAGER_STORE</node-manager-store-table-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>
driverClassName
- JDBC 数据库驱动程序的完全限定类名称。
url
- 数据库服务器的完整 JDBC 连接 URL。
username
- 您的数据库服务器的加密用户名。您还可以将此值指定为未加密的纯文本。有关加密配置文件中使用的用户名和密码的详情请参考 第 5.9 节 “加密配置文件中的密码”。
password
- 加密您的数据库服务器密码。您还可以将此值指定为未加密的纯文本。有关加密配置文件中使用的用户名和密码的详情请参考 第 5.9 节 “加密配置文件中的密码”。
poolPreparedStatements
-
当此参数的值设为
true
时,池可以具有无限数量的缓存就绪语句。这可降低初始化成本。 maxTotal
-
池中连接的最大数量。当此参数的值设为
-1
时,没有限制。
如果您没有明确配置 JDBC 连接池,代理将使用带有默认配置的连接池。默认配置在表中进行了描述。
DBCP 配置参数 | 默认值 |
---|---|
|
现有 |
|
现有 |
|
现有 |
|
现有 |
|
|
|
|
重新连接 仅在 没有客户端主动向代理发送信息时才有效。如果在重新连接过程中尝试写入数据库表,代理会失败并关闭。
其它资源
- 有关 AMQ Broker 支持的数据库的详情,请查看红帽客户门户网站 中的 Red Hat AMQ 7 支持的配置。
- 要了解 Apache Commons DBCP 软件包中所有可用的配置选项,请参阅 Apache Commons DBCP 配置参数。