【发布时间】:2015-02-08 20:49:01
【问题描述】:
我目前有一个有效的两个代理 JDBC MasterSlave 配置,下一步是实现一个带有故障转移的调度程序。我环顾四周,没有看到任何有关此的信息,并且很想知道这是否可能,或者我是否应该尝试不同的方法。
目前,我有两个代理在代理标记和 JDBCPersistenceAdapter 标记中使用相同的 dataDirectory。但是,在该数据目录中,ActiveMQ 会创建两个单独的调度程序文件夹。我似乎不能强迫它使用同一个,所以调度故障转移不起作用。
我也尝试过使用相同标准的 KahaDB 方法,但这似乎也不起作用。
另一个选项是将调度程序信息推送到数据库(在本例中为 oracle)并能够从那里获取(不确定是否可能)。
这是我需要的基本概述:
- 主代理和从代理启动并运行,使用相同的 dataDirectory(比如说,broker1 和 broker2)
- 如果我在某个时间通过 master 发送处理消息的请求并且 master 失败,slave 应该能够从 master 获取调度程序信息(这是我卡住的地方)
- 从站应该在预定的时间处理这些消息
activemq.xml(相关部分)
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="b1" useJmx="true"
persistent="true" schedulerSupport="true">
<!-- kahaDB persistenceAdapter -->
<persistenceAdapter>
<kahaDB directory="{activemq.data}/kahadb" enableIndexWriteAsync="false"
ignoreMissingJournalfiles="true" checkForCorruptJournalFiles="true"
checksumJournalFiles="true"/>
</persistenceAdapter>
<!-- JDBC persistenceAdapter -->
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="{activemq.data}" dataSource="#oracle-ds"/>
</persistenceAdapter>
有人能指出我正确的方向吗?我对 ActiveMQ 相当陌生。提前致谢!
【问题讨论】: