Сбой базы данных закрывает службу Windows ActiveMQ, используя постоянство JDBC - PullRequest
3 голосов
/ 14 февраля 2012

У меня есть брокер ActiveMQ, работающий в качестве службы Windows.Он использует jdbcPersistenceAdapter с источником данных Oracle и универсальным пулом соединений Oracle (UCP).

Когда база данных не работает (из-за проблем с сетью или планового обслуживания), служба Windows ActiveMQ полностью закрывается,Это, конечно, делает брокера недоступным даже после восстановления базы данных.

Я пробовал проверку соединения в 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 голосов
/ 14 августа 2012

Как правило, вы должны использовать главное / подчиненное устройство JDBC для поддержки отработки отказа от другого посредника, когда база данных становится недоступной ...

см. http://activemq.apache.org/jdbc-master-slave.html

, в котором говорится, что существуетпроблема с отработкой отказа главного / подчиненного JDBC, которая была исправлена ​​в 5.6.0 ...

см. https://issues.apache.org/jira/browse/AMQ-1958

...