ActiveMq master/slave

在一个网络内运行多个brokers或者stand alone brokers时存在一个问题,这就是消息在物理上只被一个broker持有,因此当某个broker失效,那么你只能等待直到它重启后,这个broker上的消息才能够被继续发送(如果没有设置持久化,那么在这种情况下,消息将会丢失)。Master Slave 背后的想法是,消息被复制到slave broker,因此即使master broker遇到了像硬件故障之类的错误,你也可以立即切换到slave broker而不丢失任何消息。

接下来介如何配置

解压两份activemq于不同的目录,其中一个broker命名为master,一个为slave

1. master端不做处理

2. slave: activemq.xml中配置如下





    
    
        
            file:${activemq.base}/conf/credentials.properties
              
    



  
    
  

  
    
  
  

    
    
    



3. java代码:


		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
				"system",
				"manager", "failover:(tcp://0.0.0.0:61616,tcp://0.0.0.0:61617)");
		// JMS 客户端到JMS Provider 的连接
		Connection connection = connectionFactory.createConnection();
		connection.start();


启动slave后,master 会打印 active slave broker slave is attached

当关闭master 后,slave控制台会打印: Connector tcp://0.0.0.0:61617 Started

OK!

注:

1. slave将会在启动的时候去连接master,所以要先启动master

2. 除非master失效, 否则slave不会进行任何的传输或者是连接。

3. slave端 的broker  可以配置 一个额外的参数  shutdownOnMasterFailure, 设为true的话会在master失效的时候自动关闭

4.master端的参数: waitForslave: 设为true的意义  当master失效的时候,在slave工作之前,不允许有任何客户端或网络的连接

                                     shutdownOnSlaveFailure :  if ture ,the master will shutdown  if a slave becomes detached. This ensures that a  slave  is only  ever  in sync with the master




你可能感兴趣的:(ActiveMQ)