ICE学习(九) 客户端自动重试

ICE客户端如果发送消息失败,可能会自动重试。这一特性非常强大。在特定环境下,这一点将显著提升程序的健壮性同时不需要额外编码。
重试机制遵守一个原则:  最多一次( at-most-once semantics)。  最多一次原则规定,ICE客户端在失败的时候,不会重试,除非能确定服务器没有接受到请求。
为了理解遵守“”最多一次”的重要性,下边看一个列子。
interface   Account
{
     long   withdraw( long   amount);
};
withdraw操作会减少账户的资金。如果withdraw执行失败,客户端在不知道服务器有没有收到请求的情况下,就重新发送请求,就有产生了2次withdraw的风险。

请求失败时的自动重试 Automatic Retries for Request Failures

当下边情况发生时,ICE就认为请求失败。
1.链接无法建立。
2.收到回复前,链接断开。
3.超时。
4.发送或接受时,发生异常。
5.服务器返回异常信息, Automatic Retries for Request Failures。
注意:ICE把用户异常视为调用成功,因此用户异常不会引起重试。
为了决定是否重试,ICE需要解决几个问题。

1.请求失败的错误是什么类型的?
当ICE知道重试不会解决问题时,它不会浪费时间。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值