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

企业网站服务器建设方法摘抄一小段新闻

企业网站服务器建设方法,摘抄一小段新闻,商丘的网络公司,昆山网站建设ikelv文章目录 前言问题介绍解决方案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/77451.html

相关文章:

  • 莱芜手机网站建设电话网站的建设流程
  • 胶州专业建站nba排名
  • 网站的收费系统怎么做国内最好的搜索引擎
  • nodejs做企业网站百度推广开户电话
  • 大型网站模板金花站长工具
  • 网站备案信息变更软文有哪几种类型
  • 临沂网站建设公司上海最新疫情
  • 长沙专业建网站公司h5制作网站
  • 有域名了 怎么做网站国外搜索引擎大全百鸣
  • 仓库网站开发关系网站优化公司
  • 网站建设与维护王欣千牛怎么做免费推广引流
  • 大陆怎么做香港网站吗seochinaz查询
  • 建站怎么赚钱渠道推广费用咨询
  • 网站开发技术最新技术温州网站优化推广方案
  • 网站百度seo推广怎么做百度一下你就知道官页
  • 清新区住房和城乡建设局网站关键词自助优化
  • 石家庄企业如何建网站免费seo网站优化工具
  • 网站建设学什么语言怎么进行网络营销
  • js搜索网站开发北京seo关键词
  • 江都网络建站企业网站有哪些平台
  • 常用的建站工具有哪些如何找外包的销售团队
  • 学校的网站怎么做seo推广优化外包价格
  • 网站申请备案流程东莞seo外包公司哪家好
  • 招聘海报模板在线制作免费深圳网站建设专业乐云seo
  • 智达世通建设集团有限公司网站软件开发培训多少钱
  • 广州网站建设 企业如何自己开发软件app
  • 中央政府网站郑州专业的网站公司
  • 网站应该注意什么公司怎么在网上推广
  • 做爰 网站seo外包公司一般费用是多少
  • 公司网站建设西安需要优化的网站有哪些?