gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:38:39 27 4
gpt4 key购买 nike

我有一个作为 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" />

最佳答案

通常,当数据库变得不可用时,您应该使用 JDBC master/slave 来支持从另一个 broker 进行故障转移...

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

也就是说,JDBC 主/从故障转移存在一个已知问题,已在 5.6.0 中修复...

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

关于windows - 数据库故障使用 JDBC 持久性关闭 ActiveMQ windows 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9268129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com