问题描述
我的应用程序中有一个嵌入式ActiveMQ,需要一个DS。我使用Tomcat CP(已有几年时间),并试图切换到Hikari。 MQ代理的startAsynch标志设置为false。
在配置Hikari时,如果将autoCommit设置为false,则ActiveMQ代理将在启动过程中挂起。
但是,如果我将autocommit设置为True,那么就没有问题,并且经纪人就可以了。
另一方面,如果我在将startAsynch标志设置为true的情况下启动ActiveMQ,则即使Hikari中的autoCommit设置为false,代理也不会出现问题。
这是一个有趣的标题-它与tomcat CP一起出现,自动提交使用基础驱动程序使用的任何内容-在我的情况下,它是oracle驱动程序,并且oracle驱动程序的默认值是autoCommit设置为true。
ActiveMQ版本为5.16.0,Hikari为3.4.5
HikariCP Config是:
<bean id="dataSourceForbroker" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<property name="driverClassName" value="${driverClassName}"/>
<property name="jdbcUrl" value="${url}"/>
<property name="username" value="${dbusername}"/>
<property name="password" value="${password}"/>
<property name="maximumPoolSize" value="${dbSessionMaxActive}" />
<property name="autoCommit" value="false"/>
<property name="minimumIdle" value="10" />
<property name="maxLifetime" value="30000" />
<property name="connectionTimeout" value="60000" />
</bean>
创建代理的代码段是
public void ccreatebroker(){
brokerService broker = new brokerService();
broker.setbrokerId("mybroker");
broker.setbrokerName("mybroker");
broker.setPersistent(true);
broker.setUseJmx(true);
broker.setUseShutdownHook(true);
broker.setStartAsync(false);
broker.requestRestart();
broker.getManagementContext().setConnectorPort(9999);
broker.addShutdownHook(() -> {
brokerStarted = false;
logger.info("Active MQ broker was shutdown");
});
ManagementContext managementContext = new ManagementContext();
managementContext.setCreateConnector(false);
broker.setManagementContext(managementContext);
JDBCPersistenceAdapter jdbcPersistenceAdapter = new JDBCPersistenceAdapter();
jdbcPersistenceAdapter.setDataSource(dataSource);
LeaseDatabaseLocker leaseDatabaseLocker = new LeaseDatabaseLocker();
try {
broker.setPersistenceAdapter(jdbcPersistenceAdapter);
jdbcPersistenceAdapter.setLockKeepAlivePeriod(5000);
leaseDatabaseLocker.setLockAcquireSleepInterval(10000);
jdbcPersistenceAdapter.setLocker(leaseDatabaseLocker);
broker.addConnector("vm://hexgenbroker");
broker.start();
brokerStarted = true;
} catch (Exception e) {
throw new RuntimeException("broker Failed -",e);
}
}
为什么会出现这种情况?我在这里迷路了
先谢谢 -修饰
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)