当前位置: 首页 > news >正文

如何制作个人作品网站搜索引擎网站

如何制作个人作品网站,搜索引擎网站,婚纱摄影网站开题报告,做外贸在哪个网站好使用 Spring Retry 重构代码的综合指南。 问题介绍 在我的日常工作中,我主要负责开发一个庞大的金融应用程序。当客户发送请求时,我们使用他们的用户 ID 从第三方服务获取他们的帐户信息,保存交易并更新缓存中的详细信息。尽管整个流程看起来…
使用 Spring Retry 重构代码的综合指南。

问题介绍

在我的日常工作中,我主要负责开发一个庞大的金融应用程序。当客户发送请求时,我们使用他们的用户 ID 从第三方服务获取他们的帐户信息,保存交易并更新缓存中的详细信息。尽管整个流程看起来足够简单,但这些下游系统中的每一个都是不可靠的。我们必须在每一层上实现重试,并且我们必须以一种可以控制重试次数和每次重试之间的延迟的方式来实现,这样我们就不会超载下游系统。由于我无法共享实际代码,我会创建一个演示系统来做简单表示:

由于我们必须在每一层上实现重试,因此我们必须编写大量样板代码,这不仅容易出错,而且难以维护。由于每个下游系统都有自己的重试要求,因此我们最终添加了越来越多的代码,最终就像在现有垃圾之上添加垃圾一样。随着时间的推移,代码变得非常脆弱,即使是很小的变化也会破坏整个系统。

解决方案

为了解决这个问题我们决定使用 Spring Retry。

Spring Retry 项目地址: http://github.com/spring-proj…

Spring Retry 是 Spring Batch 的一个子项目,它提供了一组注解和接口,我们可以使用它们向代码添加重试逻辑。它提供了一种向代码添加重试逻辑的声明性方法。

作为本文的一部分,我们将了解如何使用 Spring Retry 重写现有代码,以及它如何帮助我将代码库减少 1000 行。在展示新代码时,我将解释每个代码的注解和用例。

在研究重构的代码之前,让我们先了解一下在项目中设置 Spring 重试所涉及的步骤。

Let’s start hacking!

1. 设置 Spring 重试

将以下依赖项添加到我们的 pom.xml 文件中:

<dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId><version>2.0.0</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.2.8.RELEASE</version>
</dependency>
  1. 在 spring 配置上启用 Spring 重试,并使用以下注解:
@Configuration
@EnableRetry
public class ApplicationConfig { }

2. 重构代码

既然我们已经设置了 Spring Retry,那么让我们开始重构代码。

  1. 以下是一个查询用户全名的代码示例,左边是老代码,右边是使用了 Spring Retry 的新代码。

使用 @Retryable 注解,我们通过 retryFor 属性指定要重试的异常数组,使用 maxAttempts 属性,可以指定要重试的次数。

2.具有指数退避的缓存重试

一下图片是一个添加缓存的代码示例中,我指定要在 JedisConnectionException 上重试,每次重试之间的延迟应为 1000 毫秒,并且延迟应呈指数增长。

使用 @Retryable 注解,我们可以使用重试退避 backoff 属性,还可以指定每次重试之间的延迟 delay。

3.外部化重试配置

我们可以轻松地将重试配置外部化到属性文件中。当我们想要重用配置并更改它们而无需重新部署应用程序时,这非常有用。就我而言,我创建了一个 retry.properties 文件并添加了以下属性:

retry.maxAttempts=2

在我的 spring 配置中包含属性文件:

// <<Other annotations>>
@PropertySource("classpath:retryConfig.properties")
public class ApplicationConfig { }

以下图片是一个先获取 MySql 连接,再查数据的例子,我再代码中使用了该外部化配置属性:

4.消除错误时的重复操作,使用 RetryListenerSupport 重试

在前面的先获取 MySql 连接,再查数据的例子中,我想获取以下事件的指标:

  • 连接 MySql 数据库时,发出指标
  • 连接 MySql 数据库失败时,发出指标
  • 当用尽所有重试次数时,发出指标
再 Spring Retry 中,我可以使用 RetryListenerSupport 将所有代码添加到一个位置,而不是在连接到 Mysql 数据库的所有代码的每个重试块中添加相同的代码。

使用 RetryTemplate 上的 registerListener 方法注册 RetryListenerSupport:

@Configuration
public class ApplicationConfig {@Beanpublic RetryTemplate installTemplate() {RetryTemplate retryTemplate = new RetryTemplate();retryTemplate.registerListener(new DefaultListenerSupport());return retryTemplate;}
}

RetryListenerSupport 提供了三种方法,我们可以重写它们来添加自定义逻辑:

  • onError — 当出现错误时调用此方法
  • close——当所有重试都用尽时调用该方法
  • open — 重试开始时调用该方法

现在让我们看看重构后的代码:

总结

在本文中,我们了解了如何使用 Spring Retry 来减少样板代码并使代码更具可读性和可维护性。通过 Spring Retry,相信你也能够消除超过 1000 行代码。

http://www.hrbkazy.com/news/40987.html

相关文章:

  • 郑州老牌做企业网站搜索引擎优化的意思
  • 网站推广的措施有哪些管理培训班
  • 新手学做网站 cs5 pdf高级seo培训
  • 网站域名试用期营销培训内容有哪些
  • 博客网站源码郑州关键词排名公司电话
  • gzip压缩网站seo快速提升排名
  • b站推广费用一般多少网站seo公司
  • 成都市建设工程交易中心网站百度网盘24小时人工电话
  • 通过模板做网站网站推广seo
  • 淘宝店铺如何和别的网站做链接2023年新闻热点事件摘抄
  • 做网站简单还是做app简单pc端网页设计公司
  • 做网站php软件百度问答优化
  • 网站健设推广产品多少钱专业做网站建设的公司
  • 网站空间ip需不需要备案商家推广平台有哪些
  • 音乐网站的设计包就业的培训机构
  • 网站内部链接怎么做的seoul是什么品牌
  • 营销网站建设解决方案百度百家官网入口
  • 在线做汉字头像的网站开网店3个月来亏了10万
  • 没有服务器怎么先做网站什么是seo优化
  • 湖南广厦建设工程有限公司网站免费b站在线观看人数在哪儿
  • 做网站的公司多少钱服务外包公司
  • 凡科建站代理登录入口百度竞价推广的技巧
  • 网站正在建设中 html 模板如何写好软文
  • 巩义做网站汉狮网络外贸建站推广哪家好
  • 郑州做网站公司电话免费的网页入口
  • 江门制作公司网站如何创建个人网站免费
  • dedecms网站郑州网站seo外包
  • 企业产品展示型网站案例百度推广收费
  • 营销型网站的建设要求都有什么影响百度权重
  • wordpress tag页东莞市网络seo推广企业