数据库故障使用JDBC持久性关闭ActiveMQ Windows服务

时间:2012-02-13 21:14:19

标签: windows service configuration jdbc activemq

我有一个作为Windows服务运行的ActiveMQ代理。它使用 jdbcPersistenceAdapter 与Oracle数据源和Oracle的通用连接池(UCP)。

当数据库关闭时(由于网络问题或计划维护),ActiveMQ Windows服务将完全关闭。这当然使得即使在数据库恢复之后代理也不可用。

我已尝试过UCP中的连接验证,DBCP连接验证甚至MySQL数据源都没有成功。该服务在数据库发生故障后30秒内关闭(我相信这是因为默认的 cleanupInterval 是30秒)。

有没有办法阻止Windows服务关闭并让它等待数据库可用性? 非常感谢任何帮助。

这是我在activemq.xml中的当前配置:

<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" />

1 个答案:

答案 0 :(得分:0)

通常,当数据库不可用时,您应该使用JDBC主/从支持来自其他代理的故障转移...

请参阅http://activemq.apache.org/jdbc-master-slave.html

说,在5.6.0 ...

中修复了JDBC主/从故障转移的已知问题

请参阅https://issues.apache.org/jira/browse/AMQ-1958