连接失败重连时间间隔可变

hash wheel timer是一种算法,netty用来做心跳超时检查,这个算法有几个共有的属性:Ticks per Wheel (一轮的tick数),Tick Duration(一个tick的持续时间)以及 TimeUnit(时间单位)。关于Tick Duration我感觉应该解释为每一次tick时间间隔。

HashedWheelTimer原文英语注释表达了这样一层意思:

一个定时器对于近实时I/O网络超时调度。

*Tick Duration: 如描述“近实时”那样,HashedWheelTimer 不会准时的调度(间隔很少)。每一次tick,将会检查是否会有TimerTask可以调度去执行,你可以在构造器中指定时间长的或时间短的tick duration用来控制调度时间的精准度。

Ticks per Wheel:HashedWheelTimer维持了一个数据结构称作“时间轮”,一个时间轮hash表的存放是由一个任务死亡时间的hash code决定的。默认大小是512个hash表,如果你需要调度很多的任务超时,你可以加大这个值。

连接失败重连,第一次500毫秒,第二次1000毫秒,....,第n-1次5秒,第n次5秒

连接失败时间间隔最大值5秒

import java.util.concurrent.TimeUnit;

import org.jboss.netty.util.HashedWheelTimer;
import org.jboss.netty.util.Timeout;
import org.jboss.netty.util.Timer;
import org.jboss.netty.util.TimerTask;

public class TimeOutTest {
	public static void main(String[] argv) {
		/*-
		 * Tick Duration(一个tick的持续时间):
		 *		如描述"近实时"那样,HashedWheelTimer不会准时的调度(间隔很少)。
		 *      每一次tick,将会检查是否会有TimerTask可以调度去执行,
		 *      你可以在构造器中指定时间长的或时间短的tick duration用来控制调度时间的精准度。
		 *
		 * 可以理解成: 每一次tick时间间隔
		 *---------------------------------------------------------------------------------
		 *	Ticks per Wheel(一轮的tick数):
		 *		HashedWheelTimer维持了一个数据结构称作"时间轮",
		 *      一个时间轮hash表的存放是由一个任务死亡时间的hash code决定的。
		 *      默认大小是512个hash表,如果你需要调度很多的任务超时,你可以加大这个值。
		 *
		 * 可以理解成: 允许Timeout的个数,默认是512个。
		 */
		final Timer timer = new HashedWheelTimer(100, TimeUnit.MICROSECONDS);
		timer.newTimeout(new TimerTask() {
			private int t = 0;

			private int count = 1;

			private int step = 500;

			public void run(Timeout timeout) throws Exception {
				System.out.println("本次是延迟 " + t + "毫秒后执行");
				if ((count * step) <= 5 * 1000) {
					t = count * step;
					System.out.println("	下次执行将在延迟 " + t + "毫秒后 第" + count + "次");
					count++;
				}
				timeout.getTimer().newTimeout(timeout.getTask(), t, TimeUnit.MILLISECONDS);
			}
		}, 500, TimeUnit.MILLISECONDS);
	}
}

连接失败重连时间间隔可变

时间: 2024-11-07 14:22:01

连接失败重连时间间隔可变的相关文章

连接失败连接区间变量

hash wheel timer它是一个算法,netty用于心跳超时检查,该算法的性能几个共同拥有:Ticks per Wheel (周围tick号码),Tick Duration(一tick持续时间)以及 TimeUnit(时间单位).左右Tick Duration我感觉应该解释为每一次tick时间间隔. HashedWheelTimer原文英语凝视表达了这样一层意思: 一个定时器对于近实时I/O网络超时调度. *Tick Duration: 如描写叙述"近实时"那样.HashedW

python+selenium+unitest用例失败重运行

经过多次研读和调试unittest代码,后来发现一个也可以重运行setUp()和dearDown()的解决办法,那就是修改源码,我们重新建一个模块套件类来覆盖原来的TestSuite类 实例代码: [python] view plain copy class Suit(unittest.TestSuite): def run(self, result, debug=False): failcount = 1#失败总运行次数 class_num = 1 topLevel = False if ge

websocket连接失败

websocket连接失败 @(markdown) 最近项目里调试websocket相关的nodejs实现的server,刚接触web开发的小伙伴们对websocket协议不熟悉,遇到问题很容易悲剧.这里只说自己理解的部分以及解决问题的经验吧. 首先,nodeserver用的socketio,于是写了个页面,用js发起websocket握手,发现一直是longpoll,猜测webserver不支持websocket协议,一查果然,haproxy设置的http反向代理.抛弃haproxy,握手成功

Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 及sql2008外围服务器

转载:Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 错误原因如下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConver

Java JDBC连接SQL Server2005错误:通过port 1433 连接到主机 localhost 的 TCP/IP 连接失败

错误原因例如以下: Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99) at org.hibernate.exception.JDBCExceptionHelper.convert(J

com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect

问题描述:最简单的数据库连接报错,到主机  的 TCP/IP 连接失败.(win 7 操作系统) 错误信息: com.microsoft.sqlserver.jdbc.SQLServerException: 到主机  的 TCP/IP 连接失败. java.net.ConnectException: Connection refused: connect package sqlconnect; import java.sql.*; public class sqlconnect { public

【BUG &amp; PROBLEM】mysql远程连接失败

问题描述 今天在云主机上用mysql客户端连接远程数据库,提示连接失败.提示 Host "62.183.38.xx" is not allow to connect the mysql server. Host 是我外网的IP.关闭云主机防火墙和启动mysql服务都无效. 解决方案 之后查了相关网友的资料后,找到原因,是由于mysql默认没有开启远程连接的权限.因此在mysql命令行中开启权限,问题解决! mysql > GRANT ALL PRIVILEGES ON *.* T

mysql客户端授权后连接失败问题

在本地(192.168.1.152)部署好mysql环境,授权远程客户机192.168.1.%连接本机的mysql,在iptables防火墙也已开通3306端口.如下:mysql> select host,user,password from mysql.user;+--------------+-----------------+---------------------------------------------------------+| host              | use

Mac 连接失败,因为 PPP 设置不正确 Mac OS 无密钥方式连接L2TP协议的VPN

实践是检验真理的唯一标准.起先直接照搬命令行结果出错,提示"连接失败,因为ppp设置不正确"怀疑方法不对.Google了国外的文章,结果都是一样的.后来手工打字进去就对了,妈蛋.蛋疼的事情是必须打字 终端命令如下: sudo vi /etc/ppp/options 输入: plugin L2TP.pppl2tpnoipsec 保存退出.在高级中选择通过VPN发送全部流量.