ActiveMQ的断线重连机制
断线重连机制是ActiveMQ的高可用性具体体现之一。ActiveMQ提供failover机制去实现断线重连的高可用性,可以使得连接断开之后,不断的重试连接到一个或多个brokerURL。
默认情况下,如果client与broker直接的connection断开,则client会新起一个线程,不断的从url参数中获取一个url来重试连接。
配置语法
failover:(uri1,...,uriN)?transportOptions&nestedURIOptions
or
failover:uri1,...,uriN

例如:
failover:(tcp://localhost:61616,tcp://remotehost:61616)?initialReconnectDelay=100
具体配置参数参考:http://activemq.apache.org/failover-transport-reference.html
使用randomize
默认情况下,failover机制从URI列表中随机选择出一个URI进行连接,这可以有效地控制客户端在多个broker上的负载均衡,但是,要使客户端首先连接到主节点,并在主节点不可用时只连接到辅助备份代理,需要设置randomize = false。
failover:(tcp://master:61616,tcp://slave:61616)?randomize=false
在failover机制下传输,发送操作将默认在broker变得不可用时无限期阻塞。 有两个选项可用于处理此方案。 首先,直接在ActiveMQConnectionFactory上设置一个TransportListener,以便在任何可能需要网络跳跃的请求之前就位,或者设置超时选项。 超时选项会导致当前发送操作在指定的超时后失败。
failover:(tcp://primary:61616)?timeout=3000
在此示例中,如果连接未建立,发送操作将在3秒后超时。 需要注意的是,当超时发生时连接不会被终止。 因此,一旦broker可用,以后可能使用相同的连接重新发送受影响的消息。
broker端的配置参数
例子:
<broker>
...
<transportConnectors>
<transportConnector name="openwire"
uri="tcp://0.0.0.0:61616"
updateClusterClients="true"
updateClusterFilter=".*A.*,.*B.*"/>
</<transportConnectors>
...
</broker>
当updateClusterClients=”true”时,client端的failover配置只需要写成:
failover:(tcp://primary:61616)
当新的broker加入集群时,客户端被自动通知新的broker的URI。 当其他已知broker之一不可用时,新的URI可用于故障转移。
Priority Backup
ActiveMQ 5.6+开始,如果broker在本地和远程网络中都可用,则可以使用priorityBackup和priorityURIs选项为远程broker指定本地broker的首选项。
failover:(tcp://local:61616,tcp://remote:61616)randomize=false&priorityBackup=true
以上配置例子,客户端将尝试连接并保持连接到本地broker。 如果本地broker失败,它当然会故障转移到远程。 但是,由于使用priorityBackup参数,客户端将不断尝试重新连接到本地。 一旦客户端可以这样做,客户端将重新连接到它,而不需要任何手动干预。
默认情况下,只有列表中的第一个URI被视为优先级(本地)。 在大多数情况下,这就足够了。 然而,在一些情况下,可能需要具有多个“本地”URI。 priorityURIs选项可用于指定哪些URI被视为优先级。
failover:(tcp://local1:61616,tcp://local2:61616,tcp://remote:61616)?randomize=false&priorityBackup=true&priorityURIs=tcp://local1:61616,tcp://local2:61616
---------------------
作者:ProHayley
来源:CSDN
原文:https://blog.csdn.net/zuolj/article/details/53167758
版权声明:本文为博主原创文章,转载请附上博文链接!
ActiveMQ的断线重连机制的更多相关文章
- Netty(六):Netty中的连接管理(心跳机制和定时断线重连)
何为心跳 顾名思义, 所谓心跳, 即在TCP长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性. 为什么需要心跳 因为网络的不可靠性, 有可 ...
- 浅谈IM软件client的断线重连、心跳和长在线
版权声明:原创文章,未经博主同意禁止转载.欢迎点击头像上方"郭晓东的专栏"查看专栏 https://blog.csdn.net/hherima/article/details/27 ...
- 微信小程序使用原生WebSokcet实现断线重连及数据拼接
以前做小程序为了应急找了个插件去链接WebSokcet,文章传送门. 回过头在新项目中再次使用时出现了些许问题,不一一赘述.遂决定好好用一下原生的WebSokcet. 一.说明 1.小程序原生的Web ...
- 正确理解IM长连接的心跳及重连机制,并动手实现(有完整IM源码)
1.引言 说道“心跳”这个词大家都不陌生,当然不是指男女之间的心跳,而是和长连接相关的.顾名思义就是证明是否还活着的依据. 什么场景下需要心跳呢?目前我们接触到的大多是一些基于长连接的应用需要心跳来“ ...
- Netty学习篇④-心跳机制及断线重连
心跳检测 前言 客户端和服务端的连接属于socket连接,也属于长连接,往往会存在客户端在连接了服务端之后就没有任何操作了,但还是占用了一个连接:当越来越多类似的客户端出现就会浪费很多连接,netty ...
- Netty 如何实现心跳机制与断线重连?
作者:sprinkle_liz www.jianshu.com/p/1a28e48edd92 心跳机制 何为心跳 所谓心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, ...
- Netty 之 Netty生产级的心跳和重连机制
https://blog.csdn.net/z69183787/article/details/52625095 最近工作比较忙,但闲暇之余还是看了阿里的冯家春(fengjiachun)的github ...
- Mina 断线重连
Mina 断线重连 定义:这里讨论的Mina 断线重连是指使用mina作为客户端软件,连接其他提供Socket通讯服务的服务器端.Socket服务器可以是Mina提供的服务器,也可以是C++提供的服务 ...
- .net/c# RabbitMQ 连接断开处理-断线重连(转载)
Rabbitmq 官方给的NET consumer示例代码如下,但使用过程,会遇到connection断开的问题,一旦断开,这个代码就会报错,就会导致消费者或者生产者挂掉. 下图是生产者发送消息,我手 ...
随机推荐
- JavaOOP笔记
http://note.youdao.com/noteshare?id=bbdc0b970721e40d327db983a2f96371
- DevExpress内 GridControl中复选框值问题
在DevExpress的 GridControl内的复选柜勾选后,界面看到是勾选状态,但对应的DataView的值仍未变,在以下事件内处理 在对应的DataView内的 CellValueChangi ...
- ssh网上商城源码
本人承诺源码免费,只是出于前期发布很多免费资源反而落不到好下场,总是被一些人说三道四.就算你去找到资源版本不符合你也运行不起来.如果想要资源加QQ1397617269,或者电话短信1395630164 ...
- Oracle 存储过程 PROCEDURE
存储过程 一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中.在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一 ...
- SPARK-AM-TrackURL-UI-500
HTTP ERROR 500 Problem accessing /proxy/application_1538120222810_0072/. Reason: Connection refused ...
- history.pushState()和history.replaceState()
Html5 新增history对象的两个方法:history.pushState()和history.replaceState(),方法执行后,浏览器地址栏会变成你传的url,而页面并不会重新载入或跳 ...
- Edge Intelligence: On-Demand Deep Learning Model Co-Inference with Device-Edge Synergy
边缘智能:按需深度学习模型和设备边缘协同的共同推理 本文为SIGCOMM 2018 Workshop (Mobile Edge Communications, MECOMM)论文. 笔者翻译了该论文. ...
- Openstack中RabbitMQ RPC代码分析
在Openstack中,RPC调用是通过RabbitMQ进行的. 任何一个RPC调用,都有Client/Server两部分,分别在rpcapi.py和manager.py中实现. 这里以nova-sc ...
- Shadow Copying导致ASP.NET应用启动很慢的解决办法
What's Shadow Copying? 我们安装一个应用程序并启动后,我们是无法更新应用程序安装目录中程序集文件的.如果强制替换会提示文件正在使用,如下图所示. 那你可能会问,为什么会无法更新呢 ...
- 【RL-TCPnet网络教程】第37章 RL-TCPnet之FTP客户端
第37章 RL-TCPnet之FTP客户端 本章节为大家讲解RL-TCPnet的FTP客户端应用,学习本章节前,务必要优先学习第35章的FTP基础知识.有了这些基础知识之后,再搞本章节会有事 ...