• ActiveMQ学习笔记(11)----ActiveMQ的动态网络连接


    1. 多播协议multicast

      ActiveMQ使用Multicast协议将一个Service和其他的Broker是我Service里连接起来。IP Multicast是一个被用于网络中传输数据到其他一组接收者的技术。 Ip muiticast传统的概念称为组地址,组地址是ip地址在ActiveMQ broker使用multicast协议去建立服务与远程的broker的服务的网络连接。

    2. 基本的格式配置

      multicast://ipaddress:port?transportOptions

      transportOptions如下:

      1:group:表示唯一的组名称,缺省值default

      2:minmumWireFormatVersion:被允许的最小的wireformat版本,缺省为0

      3:trace:是否追踪记录日志,默认false

      4:useLocalHost:表示本地机器的名称是否为localhost,默认true

      5:datagramSize:特定的数据大小,默认值4 * 1024

      6:timeToLive:消息的生命周期,默认值-1

      7:loopBackMode:是否启用loopback模式,默认false

      8:wireFormat:默认用wireFormat命名

      9:wireFormat.*:前缀是wireFormat

    3. 配置示例

      1:默认配置,请注意,默认情况下是不可靠的多播,数据包可能会丢失

      multicast://default

      2:特定的ip和端口

      multicast://224.1.2.3:6255

      3:特定的ip和端口以及组名

      multicast://224.1.2.3:6255?group=mygroupname

    4. Activemq使用multicast协议的配置格式

      如下:

    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="multicast"
                dataDirectory="${activemq.base}/data">
        <networkConnectors>
            <networkConnector name="default-nc" uri="multicast://default"/>
           </networkConnectors>
        <transportConnectors>
            <transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default"/>
        </transportConnectors>
    </broker>

      上面的配置说明

      1:uri=“multicast://default”中的default是activemq默认的ip,默认动态的寻找地址

      2:“discoveryUri”是指在transport中用multicast的default的地址传递

      3:“uri”指动态寻找可利用的地址

      4:如何防止自动的寻找地址?

      (1)名称为openwire的transport,移除discoveryUri=”multicast://default”即可。传输链接用默认的名称openwire来配

        broker的tcp多点链接,这将允许其它broker能够自动发现和链接到可用的broker中。

      (2)名称为“default-nc”的networkConnector,注释掉或者删除即可。

        ActiveMQ默认的networkConnector基于multicast协议的链接的默认名称是default-nc,而且自动的去发现其他broker。去停止这种行为,只需要注销或者删除掉default-nc网络链接。

      (3)使brokerName的名字唯一,可以唯一识别Broker的实例,默认是localhost

    5. Multicast 协议和普通的tcp协议

      它们是差不多的,不同的是Multicast能够自动的发现其他broker,从而替代了使用static功能列表brokers。用multicast协议可以在网络中频繁的添加和删除ip不会有影响。

      multicast协议的好处是:能够适应动态变化的地址。

      缺点:自动的链接地址和过度的销耗网络资源。

    6. Discovery协议

      Discovery是在multicast协议的功能上定义的。功能类似与failover功能。它将动态的发现multicast 协议的broker的链接并且随机的链接其中一个broker。

      6.1 基本配置格式如下

    discovery:(discoveryAgentURI)?transportOptions

      transportOptions如下:

      1:reconnectDelay:再次寻址等待时间,缺省值10

      2:initialReconnectDelay:初始化设定再次寻址等待时间,缺省值10

      3:maxReconnectDelay:最大寻址等待时间, 缺省值30000

      4:useExponentialBackOff:是否尝试BackOff重链接,默认是true

      5:backOffMultiplier:尝试Backoff的次数,默认是2

      6:maxReconnectAttempts:如果异常,最大的重新链接个数,默认是0

      7:group:组唯一的地址,默认是default

      示例:

      discovery:(multicast://default)?initialReconnectDelay=100

      6.2 Discovery协议的配置示例

    <broker name="foo">
        <transportConnectors>
            <transportConnector uri="tcp://localhost:0" discoveryUri="multicast://default"/>
        </transportConnectors>
    </broker>

    7. Peer协议

      ActiveMQ提出了peer transport connector 以让你更加容易的去嵌入broker中网络中。它将创建一个优于vm链接的p2p网络链接。 默认格式如下:
      peer://peergroup/brokerName?key=value

      7.1 Peer协议基本使用

        

    当我们启动了用peer协议时,应用将自动的启动内嵌broker,也将会自动的去配置其它broker来建立链接,当然了,前提是必须属于一个组。 配置如下:
      peer://groupa/broker1?persistent=false
      另外,生产者和消费者都各自链接到嵌入到自己应用的broker,并且在在本地的同一个组名中相互访问数据。

      Peer协议的基本原理示意图

      

      在本地机器断网的情况下,本地的client访问本地brokerA将任然正常。在断网的情况下发送消息到本地brokerA,然后网路链接正常后,所有的消息将重新发送并链接到brokerB

    8. Fanout协议

      Fanout协议是同时链接多个broker,默认的格式如下:

      fanout:(fanoutURI)?key=value

      示例:fanout:(static:(tcp://host1:61616,tcp://host2:61616,tcp://host3:61616))

      表示client将试图链接到三个static列表中定义的三个URI

      8.1 Fanout协议的配置方式如下

        fanout:(discoveryURI)?transportOptions

      transportOptions如下:

      1:initialReconnectDelay:重新链接的等待时间,默认是10

      2:maxReconnectDelay:最大重新链接的等待时间,默认是30000

      3:useExponentialBackOff:是否尝试BackOff重链接,默认是true

      4:backOffMultiplier:尝试Backoff的次数,默认是2

      5:maxReconnectAttempts:如果异常,最大的重新链接个数,默认是0

      6:fanOutQueues:是否将topic消息转换queue消息,默认false

      7:minAckCount:Broker链接的最小数,默认是2

      配置示例:

      fanout:(static:(tcp://localhost:61616,tcp://remotehost:61616))?initialReconnectDelay=100

      特别提醒

      Activemq不推荐使Consumer使用fanout协议。当Provider发送消息到多个broker中,测试Consumer可能收到重复的消息

  • 相关阅读:
    在页面跳转的时候,在跳转后的页面中使用js 获取到 页面跳转的url中携带的参数。
    使用js处理后台返回的Date类型的数据
    java后端时间处理工具类,返回 "XXX 前" 的字符串
    前端分页神器,jquery grid的使用(前后端联调),让分页变得更简单。
    后端分页神器,mybatis pagehelper 在SSM与springboot项目中的使用
    使用SSM 或者 springboot +mybatis时,对数据库的认证信息(用户名,密码)进行加密。
    swagger2 常用注解的使用
    SSM项目 以及 springboot 中引入swagger2的方法
    jquery grid 获取选中的行的数据,以及获取所有行的方法
    关于使用ssm与spring时,配置tomcat 虚拟目录( doBase )中的一些坑
  • 原文地址:https://www.cnblogs.com/Eternally-dream/p/9890858.html
Copyright © 2020-2023  润新知