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实践笔记

注意的地方

  1. 默认情况下,cluster=failover、retries=2,意为失败重试两次,不包含原生调用。如需配置不重试,需设置retries=-1,或者使用failfast(快速失败)模式
  2. 如果Dubbo接口嵌套Dubbo接口,比如A程序调用B接口,B接口实现中调用C接口。如果按默认重试2次,全部调用失败情况下,最终调用C接口3 * 3 = 9次。我们在Dubbo接口嵌套情况下一般设置为不重试
  3. 配置覆盖的规则:(1)方法配置优先级大于接口配置;(2)消费端配置优先级大于提供端配置。规则思路在于,提供端更了解服务的性能,理应由服务端配置的,但仍提供消费端覆盖配置。官方文档描述见此

Dubbo协议

Dubbo协议是推荐使用的协议,因其单一长连接和NIO异步通讯的特性适用于小数据量大并发的调用。

如果你们消费者数量远大于提供数数量(谁不是呢?哈哈),而又是小数据量的调用居多,就用此协议吧。

官方文档描述见此

常见的默认配置

  1. dubbo.service.timeout,默认超时时间为1000毫秒
  2. dubbo.service.cluster,默认为failover,失败重试
  3. dubbo.service.retries,默认为2,不含原生调用
  4. dubbo.service.loadbalance,默认为random,随机
  5. dubbo.service.proxy,默认生成动态代理方式为javasisit
  6. dubbo.protocol.name,默认为dubbo
  7. dubbo.protocol.payload,默认为88388608(8M),默认请求或响应数据包的大小为8M
  8. dubbo.protocol.codec,默认协议编码方式为dubbo
  9. dubbo.protocol.serialization,dubbo协议默认为hessian2,rmi默认为java,http默认为json

参考的文章

Dubbo官方用户指南

以上是关于springboot数据库不重试的主要内容,如果未能解决你的问题,请参考以下文章

GCP PubSub:“请求被中止,因为没有可用的实例。” - 不重试失败

在 Angular 中执行 Http get 方法而不重试并等到服务器发送响应?

java客户端调用webservice时 连接超时知道是网络原因 ,如何重试如果不重试程序就死琐了,

助力SpringBoot自动配置的条件注解ConditionalOnXXX分析--SpringBoo

Dubbo实践笔记

Dubbo重试次数