中间件客户端超时与重试
JSF是京东自研的SOA框架,主要有三个组件:注册中心、服务提供端、服务消费端。
首先是在服务提供端/消费端与注册中心之间进行服务注册/发现时可以配置timeout(调用注册中心超时时间,默认为5s)和connectTimeout(连接注册中心的超时时间,默认为20s)。
服务提供端可以配置timeout(服务器端调用超时时间,默认为5s)。
服务消费端可以配置timeout(调用端调用超时时间,默认为5s)、connectTimeout(建立连接超时时间,默认为5s)、disconnectTimeout(断开连接/等待结果超时时间,默认为10s)、reconnect(调用端重连死亡服务器端的间隔,配置小于0表示不重连,默认为10s)、heartbeat(调用端往服务器端发心跳包的间隔,配置小于0代表不发送,默认为30s)和retries(失败后重试次数,默认0不重试)。
Dubbo也有类似的配置,在此就不赘述了。
JMQ是京东消息中间件,主要有四个组件:注册中心、Broker(JMQ的服务器端实例,生产和消费消息都跟它交互)、生产者、消费者。
首先是在生产者/消费者与Broker进行发送/接收消息时,可以配置connectionTimeout(连接超时)、sendTimeout(发送超时)和soTimeout(读超时)。
生产者可以配置retryTimes(发送失败后的重试次数,默认为2次)。
消费者可以配置pullTimeout(长轮询超时时间,即拉取消息超时时间)、maxRetrys(最大重试次数,对于消费者要允许无限制重试,即一直拉取消息)、retryDelay(重试延迟,通过exponential配置延迟增加倍数一直增加到maxRetryDelay)、maxRetryDelay(最大重试延迟)。消费者还需要配置应答超时时间(服务器端需要等待客户端返回应答才能移除消息,如果没有应答返回,则会等待应答超时,在这段时间内锁定的消息不能被消费,必须等待超时后才能被消费)。
对于消息中间件,我们在实际应用中关注超时配置会少一些,因为生产者默认配置了重试次数,可能会存在重复消息,消费者需要进行去重处理。
CXF可以通过如下方式配置CXF客户端连接超时、等待响应超时和长连接。
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(30000);//默认为30s
httpClientPolicy.setReceiveTimeout(60000); //默认为60s
httpClientPolicy.setConnection(ConnectionType.KEEP_ALIVE);//默认为Keep-Alive
((HTTPConduit)client.getConduit()).setClient(httpClientPolicy);
本文地址:中间件客户端超时与重试 _http://longshunzhuangshi.com/wangzhanxitong/28.html 本文tag标签:客户端超时
上一篇:使用配置中心实现开关配置
下一篇:系统优化和容灾
- 2020-07-31 17:38NoSQL客户端超时怎么办