CodisLabs / jodis

A java client for codis based on Jedis and Curator
MIT License
216 stars 97 forks source link

网络重连的次数和间隔可否定制 #26

Closed Tom-Goong closed 8 years ago

Tom-Goong commented 8 years ago

如果客户端初始化已经成功了,后来突然的网络中断等问题,会发起重连。关于这些 Client session timed out, have not heard from server in 2003ms for sessionid 0x0, closing socket connection and attempting reconnect (ClientCnxn.java:1096)

Opening socket connection to server 10.201.3.38/10.201.3.38:2180. Will not attempt to authenticate using SASL (unknown error) (ClientCnxn.java:975)

怎么做次数和时间定制。或者取消重连。。

yangzhe1991 commented 8 years ago

不重连的目的是什么?zk连接断了client就不能用了吧。。

Apache9 commented 8 years ago

这个是zookeeper在后台重连吧,对你使用应该没影响?

Tom-Goong commented 8 years ago

似的。因为redis是作为辅助功能,如果意外出问题,不能对主业务有影响。所以代码上已经做到这一步了。只是现在希望后台重连不要太频繁,或者可定制。。。不过这个确实不是大问题

Apache9 commented 8 years ago

可以设,你自己在外部创建一个CuratorFramework,重试策略自己设。然后创建RoundRobinJedisPool的时候用你这个CuratorFramework。

Tom-Goong commented 8 years ago

代码如下(故意让不重试),还是会不停重试的。如第一个评论里的内容

`CuratorFramework curatorFramework = CuratorFrameworkFactory.builder().connectString(zooKeepAddress) .sessionTimeoutMs(3000) .retryPolicy(new RetryNTimes(0, 50000)) .build();

            jedisPool = RoundRobinJedisPool.create()
                    .curatorClient(curatorFramework, true)
                    .zkProxyDir(proxyDir)
                    .password(codisPassword)
                    .build();`
Apache9 commented 8 years ago

这个是Curator相关的东西了,你看看Curator的文档?或者去他们那边问一下。。。

Tom-Goong commented 8 years ago

好的