springboot数据库不重试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot数据库不重试相关的知识,希望对你有一定的参考价值。
参考技术A 方案1:application.properties里面添加即可
spring.datasource.druid.break-after-acquire-failure=true
spring.datasource.druid.connection-error-retry-attempts=1
1
2
1
2
方案2:动态数据源解决方案
DruidDataSource druidDataSource=new DruidDataSource();
druidDataSource.setUrl(dbInfo.getUrl());
druidDataSource.setUsername(dbInfo.getUserName());
druidDataSource.setPassword(dbInfo.getPassword());
druidDataSource.setConnectionErrorRetryAttempts(1); //失败后重连次数
druidDataSource.setBreakAfterAcquireFailure(true);
1
2
3
4
5
6
1
2
3
4
5
6
完成了,只会试一次,不成功不会无限尝试
Dubbo实践笔记
注意的地方
- 默认情况下,cluster=failover、retries=2,意为失败重试两次,不包含原生调用。如需配置不重试,需设置retries=-1,或者使用failfast(快速失败)模式
- 如果Dubbo接口嵌套Dubbo接口,比如A程序调用B接口,B接口实现中调用C接口。如果按默认重试2次,全部调用失败情况下,最终调用C接口3 * 3 = 9次。我们在Dubbo接口嵌套情况下一般设置为不重试
- 配置覆盖的规则:(1)方法配置优先级大于接口配置;(2)消费端配置优先级大于提供端配置。规则思路在于,提供端更了解服务的性能,理应由服务端配置的,但仍提供消费端覆盖配置。官方文档描述见此。
Dubbo协议
Dubbo协议是推荐使用的协议,因其单一长连接和NIO异步通讯的特性适用于小数据量大并发的调用。
如果你们消费者数量远大于提供数数量(谁不是呢?哈哈),而又是小数据量的调用居多,就用此协议吧。
官方文档描述见此。
常见的默认配置
- dubbo.service.timeout,默认超时时间为1000毫秒
- dubbo.service.cluster,默认为failover,失败重试
- dubbo.service.retries,默认为2,不含原生调用
- dubbo.service.loadbalance,默认为random,随机
- dubbo.service.proxy,默认生成动态代理方式为javasisit
- dubbo.protocol.name,默认为dubbo
- dubbo.protocol.payload,默认为88388608(8M),默认请求或响应数据包的大小为8M
- dubbo.protocol.codec,默认协议编码方式为dubbo
- dubbo.protocol.serialization,dubbo协议默认为hessian2,rmi默认为java,http默认为json
参考的文章
以上是关于springboot数据库不重试的主要内容,如果未能解决你的问题,请参考以下文章
GCP PubSub:“请求被中止,因为没有可用的实例。” - 不重试失败
在 Angular 中执行 Http get 方法而不重试并等到服务器发送响应?
java客户端调用webservice时 连接超时知道是网络原因 ,如何重试如果不重试程序就死琐了,