数据库故障使用JDBC持久性关闭ActiveMQ windows服务
我有一个作为Windows服务运行的ActiveMQ代理。它将jdbcPersistenceAdapter与Oracle数据源和Oracle的通用连接池(UCP)一起使用 数据库关闭时(由于网络问题或定期维护),ActiveMQ windows服务将完全关闭。当然,这会使代理即使在数据库恢复后也不可用 我尝试过UCP中的连接验证,DBCP中的连接验证,甚至MySQL数据源都没有成功。该服务在数据库发生故障后30秒内关闭(我相信这是因为默认的清理间隔为30秒) 是否有方法阻止windows服务关闭并使其等待数据库可用性? 非常感谢您的帮助 以下是我在activemq.xml中的当前配置:数据库故障使用JDBC持久性关闭ActiveMQ windows服务,windows,service,configuration,jdbc,activemq,Windows,Service,Configuration,Jdbc,Activemq,我有一个作为Windows服务运行的ActiveMQ代理。它将jdbcPersistenceAdapter与Oracle数据源和Oracle的通用连接池(UCP)一起使用 数据库关闭时(由于网络问题或定期维护),ActiveMQ windows服务将完全关闭。当然,这会使代理即使在数据库恢复后也不可用 我尝试过UCP中的连接验证,DBCP中的连接验证,甚至MySQL数据源都没有成功。该服务在数据库发生故障后30秒内关闭(我相信这是因为默认的清理间隔为30秒) 是否有方法阻止windows服务关闭
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#oracle-ds"/>
</persistenceAdapter>
<bean id="oracle-ds" class="oracle.ucp.jdbc.PoolDataSourceFactory"
factory-method="getPoolDataSource" p:URL="jdbc:oracle:thin:@localhost:1521:amq"
p:connectionFactoryClassName="oracle.jdbc.pool.OracleDataSource"
p:validateConnectionOnBorrow="true" p:user="appuser" p:password="userspassword" />
通常,当数据库不可用时,您应该使用JDBC主/从服务器来支持从另一个代理进行故障切换 看 也就是说,JDBC主/从故障切换存在一个已知问题,该问题在5.6.0中已修复
请参见在使用持久性eAdApterFactory日志时,您是否会得到相同的行为?谢谢@boday的提示。我配置了journalPersistenceAdapterFactory,得到了相同的行为,windows服务在30秒内停止。我在Oracle数据存储中使用了一个新的persistenceFactory,而不是persistenceAdapter。