消息必须持久化
主服务端配置文件:
hornetq-configure.xml添加
//持久化配置
<persistence-enabled>true</persistence-enabled>
//用于连接备份服务器的连接器
<backup-connector-ref connector-name="backup-connector"/>
<connectors>
......
//备用连接器
<connector name="backup-connector">
<factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class>
<param key="host" value="172.20.16.191"/>
<param key="port" value="5445"/>
</connector>
</connectors>
hornetq-jms.xml添加
在connection-factory.connectors.connector-ref添加属性backup-connector-name。
在connection-factory添加failover-on-server-shutdown并设为true,表示Ctrl-c停止服务器时进行失效救援。
具体配置见下文:
<connection-factory name="NettyConnectionFactory">
<connectors>
<connector-ref connector-name="netty" backup-connector-name="backup-connector"/>
</connectors>
<entries>
<entry name="connectionFactory"/>
<entry name="/XAConnectionFactory"/>
</entries>
<failover-on-server-shutdown>true</failover-on-server-shutdown>
</connection-factory>
从服务端配置文件:
hornetq-configure.xml添加
//持久化配置
<persistence-enabled>true</persistence-enabled>
//是否为备份服务器
<backup>true</backup>
注:
1、先启动从服务端,后启动主服务端。
2、主从两边的data要保持一致。
3、以上的配置采用的是数据复制来保证主从数据一致,还有一种方法是存储共享,使用存储共享是需要在主从服务器的hornetq-configure.xml中添加如下配置:
//是否共享存储
<shared-store>true</shared-store>
//数据目录设置为共享目录
<paging-directory>shared-dir/data/paging</paging-directory>
<bindings-directory>shared-dir/data/bindings</bindings-directory>
<journal-directory>shared-dir/data/journal</journal-directory>
<large-messages-directory>shared-dir/data/large-messages</large-messages-directory>