zoukankan      html  css  js  c++  java
  • 分布式-信息方式-ActiveMQ静态网络连接的容错

                                            容错的链接
    Failover Protocol
    前面讲述的都是client配置链接到指定的 broker上。但是,如果 Broker的链接失败怎么办呢?此
    时, Client有两个选项:要么立刻死掉,要么去连接到其它的 broker上。
    Failover协议实现了自动重新链接的逻辑。这里有两种方式提供了稳定的 brokers列表对于
    Client链接。第一种方式:提供一个 static的可用的 Brokers列表。第二种方式:提供一个 dynamic发
    现的可用 Brokers
    Failover Protocol的配置方式
    failover:(uri1,,,uriN)?key= value 或者 failover:uri1,...,uriN
    Failover Protocol的默认配置
    默认情况下,这种协议用于随机的去选择一个链接去链接,如果链接失败了,那么会链接到其他
    的 Broker上。默认的配置定义了延迟重新链接,意味着传输将会在10秒后自动的去重新链接可用的
    broker。当然所有的重新链接参数都可以根据应用的需要而配置。
    Failover Protocol的使用示例,在客户端程序里面:
    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
    "failover: (tcp: //192.168.145.100:61616, tcp: //192.168.145.100:61676)
    ?randomize=false")

    代码如下:

    randomize=false   说明按顺序---》192.168.145.100:61616服务失败,再尝试192.168.145.100:61676

    package test.mq.staitsnetwork;
    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.Destination;
    import javax.jms.JMSException;
    import javax.jms.MessageProducer;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    
    import org.apache.activemq.ActiveMQConnectionFactory;
    
    public class Sender {
           public static void main(String[] args) throws JMSException, InterruptedException {
            ConnectionFactory   ConnectionFactory=new ActiveMQConnectionFactory(
                    //"tcp://192.168.145.100:61616");
            "failover:(tcp://192.168.145.100:61616,tcp://192.168.145.100:61676)?randomize=false");
            Connection connection=ConnectionFactory.createConnection();
            connection.start();
        
            Session session=connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE);
            Destination destination=session.createQueue("my_queue");
            MessageProducer Producer=session.createProducer(destination);
         
            for(int i=0;i<30;i++){
                 TextMessage message=session.createTextMessage("message----"+i);
                    //Thread.sleep(1000);  
                    Producer.send(message);
            }
             session.commit();
             session.close();
             connection.close();    
        }
    }

    结果如下:

    第一种情况:192.168.145.100:61616服务成功

     第二种情况:192.168.145.100:61616服务失败,再尝试192.168.145.100:61676服务失败服务成功

     

    randomize=ture    说明随机

    4次连续发送信息

    结果为:

     负载均衡

      FailoverProtocol可用的配置参数

    1: initialReconnectDelay:在第一次尝试重连之前等待的时间长度(毫秒),默认10
    2: maxReconnectDelay:最长重连的时间间隔(毫秒),默认3000
    3: useExponentialBackoff:重连时间间隔是答以指数形式增长,默认true
    4: backoffultiplier:递增倍数,默认2.0
    5: maxReconnectAttempts:默认-1|0,自版本5.6起:-1为默认值,代表不限重试次数;0代表从不重试
    只尝试连接一次,并不重连),5.6以前的版本:0为默认值,代表不限重试次数所有版本:如果设置
    为大于0的数,代表最大重试次数
    6: startuplaxReconnectAt tempts:初始化时的最大重连次数。一旦连接上,将使用 maxReconnectAttempts
    的配置,默认0
    7: randomize:使用随机链接,以达到负载均衡的目的,默认true
    8: backup:提前初始化一个未使用连接,以便进行快速失败转移,默认 false
    9: timeout:设置发送操作的超时时间(毫秒),默认-1
    10: trackmessages:设置是否缓存[故障发生时]尚未传送完成的消息,当 broker-旦重新连接成功,便将
    这些缓存中的消息刷新到新连接的代理中,使得消息可以在 broker切换前后顺利传送,默认fals
    11: maxcachesize:当 trackMessages启用时,缓存的最大字节,默认为128米1024 bytes
    12: updateURIsSupported:设定是否可以动态修改 broker uri(自版本5.4起),默认true

  • 相关阅读:
    visio 2019 激活方法
    sftp 多用户安装与配置
    CentOS configuration uses the SFTP server
    esxi命令行强行关闭虚拟机
    esxi 版本升级命令
    存储分析 开源重复数据删除技术崭露头角
    最简单-转换MBR为GPT
    CentOS 7 搭建本地YUM仓库,并定期同步阿里云源
    uml建模工具介绍
    C/C++中extern关键字详解
  • 原文地址:https://www.cnblogs.com/caoyingjielxq/p/9360025.html
Copyright © 2011-2022 走看看