我有一个作为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" />
答案 0 :(得分:0)
通常,当数据库不可用时,您应该使用JDBC主/从支持来自其他代理的故障转移...
请参阅http://activemq.apache.org/jdbc-master-slave.html
说,在5.6.0 ...
中修复了JDBC主/从故障转移的已知问题