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可能收到重复的消息

ActiveMQ学习笔记(11)----ActiveMQ的动态网络连接的更多相关文章

  1. ActiveMQ学习笔记(5)——使用Spring JMS收发消息

      摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...

  2. Ext.Net学习笔记11:Ext.Net GridPanel的用法

    Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...

  3. SQL反模式学习笔记11 限定列的有效值

    目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...

  4. golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好

    golang学习笔记11   golang要用jetbrain的golang这个IDE工具开发才好  jetbrain家的全套ide都很好用,一定要dark背景风格才装B   从File-->s ...

  5. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  6. Python3+Selenium3+webdriver学习笔记11(cookie处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...

  7. 并发编程学习笔记(11)----FutureTask的使用及实现

    1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ...

  8. 《C++ Primer Plus》学习笔记11

    <C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...

  9. SpringMVC:学习笔记(11)——依赖注入与@Autowired

    SpringMVC:学习笔记(11)——依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...

  10. Spring 源码学习笔记11——Spring事务

    Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...

随机推荐

  1. Django开发之路 二(django的models表查询)

    django的models表查询 一.单表查询 (1) all(): 查询所有结果 # 返回的QuerySet类型 (2) filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 #返 ...

  2. js 判断设备的来源

    function deviceType(){ var ua = navigator.userAgent; var agent = ["Android", "iPhone& ...

  3. 一个javascript面试题解析

    ; function fn(){ console.log(this.length); } var obj = { length: , method: function (fn) { fn(); // ...

  4. GreenDao 3.X之基本使用

    在GreenDao 3.X之注解已经了解到GreenDao 3.0的改动及注解.对于数据库的操作,无异于增删改查等四个操作.下面我们将了解GreenDao 3.X如何使用? AbstractDao 所 ...

  5. jar文件配置冲突问题transformResourcesWithMergeJavaResForDebug

    先看本人AS报错异常 Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > c ...

  6. iOS11访问相册权限变更问题

    手机升到iOS 11后  发现之前正常的图片保存功能无法正常使用  会闪退 经测试发现应该是权限没有开启的原因  但是NSPhotoLibraryUsageDescription已经写入plist   ...

  7. UVa 11292 The Dragon of Loowater 【贪心】

    题意:有一条有n个头的恶龙,有m个骑士去砍掉它们的头,每个骑士可以砍直径不超过x的头,问怎样雇佣骑士,使花的钱最少 把头的直径从小到大排序,骑士的能力值也从小到大排序,再一个一个地去砍头 #inclu ...

  8. NOI 2018 屠龙勇士 (拓展中国剩余定理excrt+拓展欧几里得exgcd)

    题目大意:略 真是一波三折的一道国赛题,先学了中国剩余定理,勉强看懂了模板然后写的这道题 把取出的宝剑攻击力设为T,可得Ti*x=ai(mod pi),这显然是ax=c(mod b)的形式 这部分用e ...

  9. [luogu2151 SDOI2009] HH去散步 (矩阵快速幂)

    传送门 题目描述 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH ...

  10. Python学习笔记(6)元组

    2019-03-02 元组(tuple): (1)元组是不可变的,无法进行任意修改.插入.删除一个元素. (2)创建元组大部分时候用小括号,如果创建的元组中只有一个元素,需要在它的后面加上一个逗号. ...