如何在ActiveMQ 5.16.3中配置Oracle数据库连接池数量
ActiveMQ 5.16.3 配置Oracle数据库连接池数量方法
你当前使用Apache Commons DBCP2作为JDBC连接池实现,直接在现有oracle-ds数据源Bean中追加连接池容量相关属性即可完成配置,ActiveMQ 5.16.3默认集成DBCP2依赖,不需要额外引入第三方包。
核心连接池数量配置参数说明
initialSize:连接池初始化时预创建的物理连接数,建议和最小空闲连接数保持一致,避免服务启动后临时创建连接带来的开销maxTotal:连接池允许持有的最大物理连接数,是连接池容量的硬上限,连接数达到该值后新的连接请求会进入等待队列maxIdle:连接池允许保留的最大空闲连接数,超过该阈值的空闲连接会被连接池主动回收释放minIdle:连接池保留的最小空闲连接数,空闲连接低于该值时连接池会主动创建新连接补足,避免请求到来时临时建连拉长响应时间maxWaitMillis:连接数达到maxTotal上限时,新请求等待获取连接的最大超时时间,单位为毫秒,超时后会直接抛出连接获取异常
完整配置示例
在你原有配置基础上追加上述连接池参数即可,参考配置如下:
<bean id="oracle-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@10.10.10.10:1521:hmdservicename"/> <property name="username" value="hmd"/> <property name="password" value="hmd"/> <property name="poolPreparedStatements" value="true"/> <!-- 连接池数量相关配置 --> <property name="initialSize" value="5"/> <property name="maxTotal" value="30"/> <property name="maxIdle" value="15"/> <property name="minIdle" value="5"/> <property name="maxWaitMillis" value="10000"/> </bean>
配置注意事项
- DBCP2的连接数参数名和旧版DBCP1存在差异,不要使用
maxActive这类DBCP1的旧属性,否则配置不会生效 - 示例中的参数值为通用场景参考值,你需要根据ActiveMQ的消息持久化并发量、Oracle数据库侧设置的对应用户最大连接数阈值调整
maxTotal数值,避免连接数超过数据库上限抛出连接异常 - 如果开启了PreparedStatement缓存,可额外配置
maxOpenPreparedStatements参数设置每个连接允许缓存的语句数量,常规场景设为100即可 - 配置修改完成后重启ActiveMQ服务即可生效,可通过Oracle侧的
v$session视图查询对应数据库用户的连接数,确认配置是否符合预期 - 不要盲目调大
maxTotal数值:ActiveMQ作为消息中间件,持久化操作并发不会过高,单实例场景下将最大连接数设置在20-50区间即可满足绝大多数生产场景需求,过大的连接数反而会增加数据库的连接维护开销。
内容的提问来源于stack exchange,提问作者hamid valizadeh
相关产品推荐
相关产品推荐

