c# 重试机制
protected async Task<T> TryOperation<T>(int maxRetryCount,Func<Task<T>> funcGetData)
{
Exception lastException = null;
var fixdMaxRetryCount = maxRetryCount > 1 ? maxRetryCount : 1;
for (var i=0;i< fixdMaxRetryCount; i++)
{
try
{
var data = await funcGetData().ConfigureAwait(false);
return data;
}
catch(Exception e)
{
lastException = e;
DoLogException(e);
await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, i - 1))).ConfigureAwait(false);
}
}
throw lastException;
}
c# 重试机制的更多相关文章
- ENode 1.0 - 消息的重试机制的设计思路
项目开源地址:https://github.com/tangxuehua/enode 上一篇文章,简单介绍了enode框架中消息队列的设计思路,本文介绍一下enode框架中关系消息的重试机制的设计思路 ...
- 【Dubbo 源码解析】07_Dubbo 重试机制
Dubbo 重试机制 通过前面 Dubbo 服务发现&引用 的分析,我们知道,Dubbo 的重试机制是通过 com.alibaba.dubbo.rpc.cluster.support.Fail ...
- Spring Cloud 请求重试机制核心代码分析
场景 发布微服务的操作一般都是打完新代码的包,kill掉在跑的应用,替换新的包,启动. spring cloud 中使用eureka为注册中心,它是允许服务列表数据的延迟性的,就是说即使应用已经不在服 ...
- Volley超时重试机制
基础用法 Volley为开发者提供了可配置的超时重试机制,我们在使用时只需要为我们的Request设置自定义的RetryPolicy即可. 参考设置代码如下: int DEFAULT_TIMEOUT_ ...
- SpringCloud | FeignClient和Ribbon重试机制区别与联系
在spring cloud体系项目中,引入的重试机制保证了高可用的同时,也会带来一些其它的问题,如幂等操作或一些没必要的重试. 今天就来分别分析一下 FeignClient 和 Ribbon 重试机制 ...
- Ribbon重试机制与Hystrix熔断机制的配置问题1
Ribbon超时与Hystrix超时问题,为了确保Ribbon重试的时候不被熔断,我们就需要让Hystrix的超时时间大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制 ...
- Ribbon重试机制与Hystrix熔断机制的配置问题
Ribbon超时与Hystrix超时问题,为了确保Ribbon重试的时候不被熔断,我们就需要让Hystrix的超时时间大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制 ...
- Rocket重试机制,消息模式,刷盘方式
一.Consumer 批量消费(推模式) 可以通过 consumer.setConsumeMessageBatchMaxSize(10);//每次拉取10条 这里需要分为2种情况 Consumer端先 ...
- nginx的重试机制以及nginx常用的超时配置说明
nginx的重试机制 现在对外服务的网站,很少只使用一个服务节点,而是部署多台服务器,上层通过一定机制保证容错和负载均衡. nginx就是常用的一种HTTP和反向代理服务器,支持容错和负载均衡. ng ...
- Spring Cloud重试机制与各组件的重试总结
SpringCloud重试机制配置 首先声明一点,这里的重试并不是报错以后的重试,而是负载均衡客户端发现远程请求实例不可到达后,去重试其他实例. ? 1 2 3 4 5 6 7 8 @Bean @Lo ...
随机推荐
- Runtime(IV) - 序列化与反序列化
准备条件 父类 Biology Biology.h #import <Foundation/Foundation.h> @interface Biology : NSObject { NS ...
- 【安装虚拟机一】配置VMware
安装软件 VMware 10 CentOS-6.5-x86_64-minimal.iso 第一步:打开VMware 10 主页选择 “创建新的虚拟机” 第二步:选择自定义设置 第三步:设置虚拟机兼容 ...
- docker log directory
Ubuntu - /var/log/upstart/docker.log Boot2Docker - /var/log/docker.log Debian GNU/Linux - /var/log/d ...
- java之异常统一处理
spring-mvc.xml <!-- aop --> <aop:aspectj-autoproxy/> <beans:bean id="controllerA ...
- javaweb笔记—01(编程英语、常识、Tomcat配置问题)
第一部分: 编程英语: legal:adj. 法律的:合法的:法定的 Userful :出版商 sponsor: n. 赞助者:主办者:保证人 | vt. 赞助:发起 essential:n. 本质 ...
- pyenv安装
petalinux-config出错 以为是pyenv的问题,后发现不是,把pyenv的安装卸载总结如下: 折腾了半天发觉是安装了pyenv导致的python版本混乱,卸载后问题解决了.(卸载过程见h ...
- MySQL备份与恢复-mydumper
上一片博文中,我们说明了mysqldump的备份与恢复.因为mysqldump是单线程导出,单线程恢复的,因此备份与恢复的时间比较长! 首先来安装mydumper: 下载源码:https://gith ...
- Google翻译实现
https://blog.csdn.net/yingshukun/article/details/53470424 Google翻译实现
- P2590 [ZJOI2008]树的统计(树链剖分)
P2590 [ZJOI2008]树的统计 虽然是入门树剖模板 但是我终于1A了(大哭) 懒得写啥了(逃 #include<iostream> #include<cstdio> ...
- 数据库中char和varchar区别
区别: 1)char长度是固定,而varchar长度是可变的: 比如:'abc'对于char(10)表示存储字符将占10个字节(包括7个空字符),而同样varchar(10)只占3个自己长度,10只是 ...