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

企业网站服务器建设方法历史权重查询

企业网站服务器建设方法,历史权重查询,手机怎么建立自己网站,做网站的机构文章目录 前言问题介绍解决方案Let’s start hacking!1. 设置 Spring 重试2. 重构代码 总结 前言 本文翻译自国外论坛 medium,原文地址:levelup.gitconnected.com/how-i-delet…,原文作者:Hari Ohm Prasath 使用 Spring Retry 重…

文章目录

  • 前言
  • 问题介绍
  • 解决方案
  • Let’s start hacking!
    • 1. 设置 Spring 重试
    • 2. 重构代码
  • 总结

前言

本文翻译自国外论坛 medium,原文地址:levelup.gitconnected.com/how-i-delet…,原文作者:Hari Ohm Prasath

使用 Spring Retry 重构代码的综合指南。

问题介绍

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

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

解决方案

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

Spring Retry 项目地址: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>

在 spring 配置上启用 Spring 重试,并使用以下注解:

@Configuration
@EnableRetry
public class ApplicationConfig { }

2. 重构代码

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

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

在这里插入图片描述

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

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

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

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

  1. 外部化重试配置

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

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

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

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

  1. 消除错误时的重复操作,使用 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.mmbaike.com/news/31859.html

相关文章:

  • 网站分成比例系统怎么做陕西seo推广
  • 微信网站开发公司电话移动营销
  • 城乡建设部网官方网站互联网推广营销方案
  • 建网站用html长沙官网seo技术
  • 最新网页传奇seo软件全套
  • 做英文兼职的网站有哪些关键词整站优化
  • 深圳市有方科技有限公司陕西seo
  • 做网站参考文献推推蛙seo
  • 网站建设一二级目录关键词的选取原则
  • 西安十大网络公司强强seo博客
  • wordpress建立手机网站怎样在百度上发布信息
  • 做网站必须要公司才能做吗抖音广告推广
  • 建设工程168类似的网站电子商务网站建设
  • 深圳找人做网站百度免费安装
  • 合肥做网站优化福鼎网站优化公司
  • 天津营销型网站建设费用东莞市网络seo推广服务机构
  • 网站如何兼容大多浏览器个人博客seo
  • 个人网站模板下载广告海外推广
  • 做安全题目是哪个网站学生个人网页制作html代码
  • 网站开发培训设计怎样在百度上发表文章
  • 今天的最新消息金华seo
  • 对政府网站建设管理要求昆山网站建设
  • 潍坊建设局网站谷歌官网
  • 网页设计与网站建设第04章在线测试怎么自己做个网站
  • 房地产设计公司网络优化工具app手机版
  • 免费网站建设教程视频在线数据分析工具
  • 杭州有哪些外资企业招聘关键词排名优化公司哪家强
  • 如何鉴赏网站论文国内b站不收费网站有哪些
  • wordpress 建站赚钱百度风云榜排行榜
  • 网站可以做315认证吗全国十大婚恋网站排名