分布式-信息方式-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
分布式-信息方式-ActiveMQ静态网络连接的容错的更多相关文章
- 分布式-信息方式-ActiveMQ静态网络连接信息回流功能
“丢失”的消息 有这样的场景, broker1和 broker2通过 netwoskconnector连接,一些 consumers连接到 broker1,消费 broker2上的消息.消息先被 br ...
- 分布式-信息方式-ActiveMQ静态网络连接多线程的consumer(消费者)访问集群
操作如下: 1:把整个conf文件夹复制一份,比如叫做conf22:修改里面的 activemq.xml文件(1)里面的 brokerName不能跟原来的重复(2)数据存放的文件名称不能重复,比如:& ...
- 分布式-信息方式-ActiveMQ的静态网络连接
ActiveMQ的静态网络连接 在一台服务器上启动多个Broker步骤如下:1:把整个conf文件夹复制一份,比如叫做conf22:修改里面的 activ ...
- 分布式-信息方式-ActiveMQ的Message dispatch高级特性之(指针) Message cursors
Message dispatch高级特性之 Message cursors概述 ActiveMQ发送持久消息的典型处现方式是:当消息的消费者准备就绪时,消息发送系统把存储的 消息 ...
- 分布式-信息方式-ActiveMQ的Destination高级特性3
虚拟destination用来创建逻辑destination,客户端可以通过它来生产和消费消息,它会把消息映射到物理destination. ActiveMQ支持2种方式: 1:虚拟主题(Virtua ...
- 分布式-信息方式-ActiveMQ的Destination高级特性1
ActiveMQ的Destination高级特性 Destination高级特性----->Composite Destinations 组合队列Composite Destinations : ...
- 分布式-信息方式-ActiveMQ的集群
ActiveMQ的集群Queue consumer clusters ActiveMQ支持 Consumer对消息高可靠性的负载平衡消费,如果一个 Consumer死掉,该消 ...
- 分布式-信息方式-ActiveMQ的动态网络链接
ActiveMQ的动态网络链接多播协议 multicast ActiveMQ使用 Multicast协议将一个 Service和其他的 Broker的 Service连接起来,IPmulticast是 ...
- 分布式-信息方式-ActiveMQ的消息存储持久化
ActiveMQ的消息存储持久化■概述ActiveMQ不仅支持 persistent和 non-persistent两种方式,还支持消息的恢复( recovery)方式PTPQueue的存储是很简单的 ...
随机推荐
- P3488 [POI2009]LYZ-Ice Skates
传送门 这一题基础是二分图匹配,并且要知道一个 $Hall$ 定理:对于二分图能完全匹配的充要条件是,设点数少的那边为左边,点数为 $n$,对于 $k \in [1,n]$ ,左边任意 $k$ 个点, ...
- java中的包注意事项
1:需要导入包的三个地方 a:需要导入第三方的jar包中的类或接口 b:需要导入除了java.lang包的其他包中的类(jdk中的类) c:需要导入自己写的不同包的类 2:引入包的三种方式 a:imp ...
- Nginx启动错误 Failed to read PID from file /run/nginx.pid 的处理方法
问题产生原因 因为 nginx 启动需要一点点时间,而 systemd 在 nginx 完成启动前就去读取 pid file 造成读取 pid 失败 解决方法 让 systemd 在执行 ExecSt ...
- 第二章 单表查询 T-SQL语言基础(1)
单表查询(1) 本章:逻辑查询处理,特定的SELECT查询生成正确的结果集而要经历的一系列逻辑阶段;单表查询的其他方面,包括:运算符,空值(NULL),字符的处理和临时数据,分级(ranking),C ...
- springboot(十八)-session共享
前言 在传统的单服务架构中,一般来说,只有一个服务器,那么不存在 Session 共享问题,但是在分布式/集群项目中,Session 共享则是一个必须面对的问题,先看一个简单的架构图: 在这样的架构中 ...
- 动画学习之Music图形绘制
今天来实现一个类似于网易云音乐类似的动态效果,在用网易云音乐听歌时会有一个类似这样的效果,如下: 而咱们这次要实现的效果如下: music图形的绘制: 在实现动画之前先来将静态的图形绘制出来, 如下: ...
- win10上使用自带的Hyper-V安装虚拟机
Hyper-V管理器,新建虚拟机,安装了.iso系统,但启动报错,电脑上联想G40-70,都说在bios设置的security里开启硬件虚拟化选项,可我security里没有虚拟化相关选项, 后来在 ...
- mysql单表操作与多表操作
0. null和notnull: 使用null的时候: create table t8( id int auto_increment primary key, name varchar(32), em ...
- 安全框架Shiro和SpringSecurity的比较
来自:https://www.cnblogs.com/zoli/p/11236799.html 两个基本的概念 安全实体:系统需要保护的具体对象数据 权限:系统相关的功能操作,例如基本的CRUD Sh ...
- Spring MVC 设置UTF-8编码
按照需求选其中之一即可吧. 修改读取参数时候的编码: 在web.xml中: 添加一个过滤器(filter),注册 org.springframework.web.filter.CharacterEnc ...