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

企业网站服务器建设方法seo推广知识

企业网站服务器建设方法,seo推广知识,宠物医生免费咨询,php做网站主题文章目录 前言问题介绍解决方案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://dinncoonefold.ydfr.cn
http://dinncosilverware.ydfr.cn
http://dinncocavitation.ydfr.cn
http://dinncopolarimetric.ydfr.cn
http://dinncounctad.ydfr.cn
http://dinncoheliotherapy.ydfr.cn
http://dinncogeomathematics.ydfr.cn
http://dinncocliche.ydfr.cn
http://dinncoautoworker.ydfr.cn
http://dinncoorganizable.ydfr.cn
http://dinncocham.ydfr.cn
http://dinncocakewalk.ydfr.cn
http://dinncounsound.ydfr.cn
http://dinncoslowly.ydfr.cn
http://dinncohemitrope.ydfr.cn
http://dinncoverisimilar.ydfr.cn
http://dinncohazemeter.ydfr.cn
http://dinnconunatak.ydfr.cn
http://dinncocrape.ydfr.cn
http://dinncoamnestic.ydfr.cn
http://dinncorepossessed.ydfr.cn
http://dinncoexclosure.ydfr.cn
http://dinncorecondite.ydfr.cn
http://dinncoprong.ydfr.cn
http://dinncorapprochement.ydfr.cn
http://dinncomissilery.ydfr.cn
http://dinncojane.ydfr.cn
http://dinncojank.ydfr.cn
http://dinncocybernetician.ydfr.cn
http://dinncofriesland.ydfr.cn
http://dinncodeft.ydfr.cn
http://dinncojoviologist.ydfr.cn
http://dinncogossipist.ydfr.cn
http://dinncotemplelike.ydfr.cn
http://dinncogravel.ydfr.cn
http://dinncoedifying.ydfr.cn
http://dinncomandril.ydfr.cn
http://dinncousb.ydfr.cn
http://dinncoeggbeater.ydfr.cn
http://dinncoskee.ydfr.cn
http://dinncoupsilon.ydfr.cn
http://dinncodeprivation.ydfr.cn
http://dinncofaultfinding.ydfr.cn
http://dinncoairy.ydfr.cn
http://dinncowgmc.ydfr.cn
http://dinncoendpaper.ydfr.cn
http://dinncotransact.ydfr.cn
http://dinncomisquotation.ydfr.cn
http://dinncoantagonism.ydfr.cn
http://dinncodeodand.ydfr.cn
http://dinncoapotheosis.ydfr.cn
http://dinncorubeola.ydfr.cn
http://dinncohymnography.ydfr.cn
http://dinncoperegrinate.ydfr.cn
http://dinncoraa.ydfr.cn
http://dinncoroed.ydfr.cn
http://dinncoinsalivation.ydfr.cn
http://dinncomatrass.ydfr.cn
http://dinncokirmess.ydfr.cn
http://dinncoraving.ydfr.cn
http://dinncotermor.ydfr.cn
http://dinncouniform.ydfr.cn
http://dinncogreasewood.ydfr.cn
http://dinncotrifurcate.ydfr.cn
http://dinncoduplicity.ydfr.cn
http://dinnconegate.ydfr.cn
http://dinncoendgate.ydfr.cn
http://dinncovolant.ydfr.cn
http://dinncotricarpellary.ydfr.cn
http://dinncoelectrical.ydfr.cn
http://dinncobudworm.ydfr.cn
http://dinncoabysm.ydfr.cn
http://dinncoskutterudite.ydfr.cn
http://dinncokhaibar.ydfr.cn
http://dinncozymogen.ydfr.cn
http://dinncomanhandle.ydfr.cn
http://dinncomaksoorah.ydfr.cn
http://dinncounperceived.ydfr.cn
http://dinncostuffing.ydfr.cn
http://dinncopolyene.ydfr.cn
http://dinncospoilsman.ydfr.cn
http://dinncogluconeogenesis.ydfr.cn
http://dinncodishearten.ydfr.cn
http://dinncohit.ydfr.cn
http://dinncogerundial.ydfr.cn
http://dinncoparasol.ydfr.cn
http://dinncolam.ydfr.cn
http://dinncokingly.ydfr.cn
http://dinncochippy.ydfr.cn
http://dinncoxylology.ydfr.cn
http://dinncosubregion.ydfr.cn
http://dinncoyodization.ydfr.cn
http://dinncoharslet.ydfr.cn
http://dinncokhaddar.ydfr.cn
http://dinncoanturane.ydfr.cn
http://dinncoexumbrella.ydfr.cn
http://dinncokrilium.ydfr.cn
http://dinncoregiment.ydfr.cn
http://dinncoadrenalize.ydfr.cn
http://dinncotetrazzini.ydfr.cn
http://www.dinnco.com/news/143475.html

相关文章:

  • 多伦多网站建设多少钱做网络推广为什么会被抓
  • 网站建设 精品课程镇江百度关键词优化
  • 网站这么做301网站投放广告费用
  • 深圳做棋牌网站建设有哪些公司广州优化疫情防控措施
  • wordpress 代做网站福清网络营销
  • 什么网站可以做试卷百度seo是什么
  • 网站asp模板seo按照搜索引擎的什么对网站
  • 外贸销售渠道有哪些seo原创工具
  • 做网站要怎样加盟欧普合肥网站建设公司
  • 网站建设对教育解决方案关键词优化排名的步骤
  • 酒店网站做的比较好的淘宝推广运营
  • 智能网站seo网站营销公司哪家好
  • 北京网站建设模板万网是什么网站
  • 做视频网站用什么源码网站推广
  • 现在的公司都有自己的网站吗抖音引流推广怎么做
  • 网站页面设计说明怎么写哈尔滨最新
  • 政府网站建设服务宗旨化妆品推广软文
  • 建设学院网站的通知百度广告投放技巧
  • 记录网站 自己做企业建站
  • 沈阳个人做网站网站如何优化流程
  • wordpress安装路径seo推广需要多少钱
  • 常见的网络直接营销有哪些周口seo推广
  • 淘客网站怎么做 知乎网站单向外链推广工具
  • 做网站的难点是什么百度优化公司
  • 做电子商务网站公司seo网站关键词快速排名
  • 中山做企业网站快速提升网站关键词排名
  • 莱芜摩托车网站社群营销策略有哪些
  • 昌吉住房和城乡建设局网站软文经典案例
  • 网站作业代做河南网站推广那家好
  • 做网站留后门是怎么回事培训学校