• 分布式-信息方式-ActiveMQ的动态网络链接


                                    ActiveMQ的动态网络链接
    多播协议 multicast
    ActiveMQ使用 Multicast协议将一个 Service和其他的 Broker的 Service连接起来,IP
    multicast是一个被用于网络中传输数据到其它一组接收者的技术。 Ipmulticast传统的概念称
    为组地址。组地址是ip地址在224.0.0.0到239.255.255.255之间的ip地址。 ActiveMQ broker使
    用multicast协议去建立服务与远程的 broker的服务的网络链接
    基本的格式配置
    multicast: //ipadaddress: port?transportOptions
    transportOptions如下
    1: group:表示唯一的组名称,缺省值 default
    2: minmumwireFormatVersion:被允许的最小的 wireformat版本,缺省为0
    3: trace:是否追踪记录日志,默认fa1se
    4: useLocalHost:表示本地机器的名称是否为 localhost,默认true
    5: datagramSize:特定的数据大小,默认值4*1024
    6: timeTolive:消息的生命周期,默认值-1
    7:loopBackMode:是否启用 loopback模式,默认false
    8: wireFormat:默认用 wireFormat命名
    9: wireFormat.*;前缀是 wireFormat
    配置示例
    1:默认配置,请注意,默认情况下是不可靠的多播,数据包可能会丢失
    multicast://default
    2.特定的ip和端口
    multicast://224.1.2.3:6255
    3:特定的ip和端口以及组名
    multicast://224.1.2.3: 6255?group=mygroupname
    Activemq使用multicast协议的配置格式如下

    <broker xmlns="http://activemg.apacheorg/schema/core" brokerName="multicast"
    dataDirectory="${activemq.base)/ data">
    <networkConnectors>
    <neworkConnector 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
    Multicast协议和普通的tcp协议
    它们是差不多的,不同的是Multicast能够自动的发现其他 broker,从而替代了使用
    static功能列表 brokers。用 multicast协议可以在网络中频繁的添加和删除ip不会有影响
    multicast协议的好处是:能够适应动态变化的地址。
    缺点:自动的链接地址和过度的销耗网络资源。
    Discovery协议
    Discovery是在 multicast协议的功能上定义的。功能类似与 failover功能。它将动
    态的发现multicast协议的 broker的链接并且随机的链接其中一个broker
    基本配置格式如下:
    discovery: (discoveryAgent URI)?transportOptions
    transportations如下:
    1: econnectDelay:再次寻址等待时间,缺省值10
    2: initial Reconnect Delay:初始化设定再次寻址等待时间,缺省值10
    3: maxReconnectDelay:最大寻址等待时间,缺省值3000
    4: useExponential Backoff:是否尝试 Backoff重链接,默认是true
    5: backOffMultiplier:尝试 Backoff的次数,默认是2
    6: maxReconnectAttempt s:如果异常,最大的重新链接个数,默认是0
    7: group:组唯一的地址,默认是 default
    示例:
    discovery: (multicast: //default)?initialReconnectDelay=100
    Discovery协议的配置示例
    <broker name="foo">
    <transportConnectors>
    <transport Connector uri="tcp: //localhost: 0" discoveryUri="multicast: //default"/>
    </transportConnectors>
    </broker>
    Peer协议
    ActiveMQ提出了 peer transport connector以让你更加容易的去嵌入 broker中网络
    中。它将创建一个优于VM链接的p2p网络链接。默认格式如下:
    peer: //peergroup /brokerName? key=value
    Peer协议基本使用
    当我们启动了用peer协议时,应用将自动的启动内嵌 broker,也将会自动的去配置
    其它 broker来建立链接,当然了,前提是必须属于一个组。配置如下:
    peer: //groupa/broker? persistent=false
    另外,生产者和消费者都各自链接到嵌入到自己应用的 broker,并且在在本地的同
    个组名中相互访问数据。

    Peer协议的基本原理示意图
    图8-1


    在本地机器断网的情况下,本地的client访问本地 brokerA将任然正常。在断网的情
    况下发送消息到本地 brokerA,然后网路链接正常后,所有的消息将重新发送并链接到
    brokerB
    Fanout协议
    Fanout协议是同时链接多个 broker,默认的格式如下:
    fanout: (fanoutURI)?key=value
    示例: fanout: (static: (tcp: //host1: 61616, tcp: //host2: 61616, tcp: //host3: 61616))
    表示client将试图链接到三个 static列表中定义的三个URI
    Fanout协议的配置方式如下:
    fanout:(discoveryURI?transportOptions
    transportOptions如下:
    1: initialReconnectdelay:重新链接的等待时间,默认是10
    2: maxReconnectDelay:最大重新链接的等待时间,默认是30000
    3: useExponentialBack0ff:是否尝试Back0ff重链接,默认是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))?initialReconne
    ctDelay=100
    特别提醒
    Activemq不推荐使 Consumer使用 fanout协议。当 Provider发送消息到多个 broker中,
    测试 Consumer可能收到重复的消息

     

  • 相关阅读:
    Windows系统下hosts文件工作原理
    windows2008中IIS7详细安装图文教程加fastcgi模式PHP配置教程
    C#中的global关键字
    Winform自定义控件实例
    PHP的线程安全与非线程安全版本的区别
    Visual Studio的编程环境配置
    C#Winform导出Excel
    分页
    存储过程使用相关知识
    Winform主窗体转移到新窗体
  • 原文地址:https://www.cnblogs.com/caoyingjielxq/p/9360439.html
Copyright © 2020-2023  润新知