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

网站认证怎么认证江苏网站备案流程

网站认证怎么认证,江苏网站备案流程,做网站却不给客户源代码,江苏省华建建设股份有限网站在当今的数字环境中#xff0c;应用程序严重依赖外部 HTTP/REST API来实现各种功能。这些 API 通常会编排复杂的内部和外部 API 调用网络。这创建了一个依赖网络。因此#xff0c;当依赖的 API 发生故障或停机时#xff0c;面向主要应用程序的 API 需要熟练、优雅地处理这些…在当今的数字环境中应用程序严重依赖外部 HTTP/REST API来实现各种功能。这些 API 通常会编排复杂的内部和外部 API 调用网络。这创建了一个依赖网络。因此当依赖的 API 发生故障或停机时面向主要应用程序的 API 需要熟练、优雅地处理这些中断。鉴于此本文探讨了Spring 微服务中重试机制和回退方法的实现。具体来说它强调了这些策略如何显着增强 API 集成可靠性并显着改善用户体验。 了解相关 API 故障 使用依赖于其他服务的 API 来成功执行的移动和 Web 应用程序面临着独特的挑战。例如对依赖 API 的调用可能会因各种原因而失败包括网络问题、超时、内部服务器错误或计划停机。因此此类故障可能会损害用户体验、破坏关键功能并导致数据不一致。因此实施策略来妥善处理这些故障对于维护系统完整性至关重要。 重试机制 作为主要解决方案重试机制用于处理暂时性错误和临时问题。通过自动重新尝试 API 调用此机制通常可以解决与短暂网络故障或临时服务器不可用相关的问题。重要的是区分适合重试的场景例如网络超时和重试可能无效甚至有害的场景例如业务逻辑异常或数据验证错误至关重要。 重试策略 常见的方法包括 固定间隔重试定期尝试重试 指数退避此策略涉及以指数方式增加重试之间的间隔从而减少服务器和网络的负载。 此外这两种方法都应该附带最大重试限制以防止无限循环。此外监控和记录每次重试尝试对于将来的分析和系统优化也很重要。 Spring 微服务中的重试和回退 我们可以通过两种方式来实现重试和回退方法。 1. 弹性4j Retry注解是一种声明式方式旨在简化应用程序中重试逻辑的实现。该注释可在resilience4j 包中找到。通过将此注解应用于服务方法Spring 在遇到指定类型的异常时自动处理重试过程。 下面是一个真实的实现例子。该方法调用 API 来提取用于承保贷款申请的局报告。如果此方法失败整个贷款申请承保流程就会失败从而影响消费应用程序例如移动应用程序。所以我们用以下注释来注释这个方法Retry Override Retry(name SOFT_PULL, fallbackMethod performSoftPull_Fallback) public CreditBureauReportResponse performSoftPull(SoftPullParams softPullParams, ErrorsI error) {CreditBureauReportResponse result null;try {Date dt new Date();logger.info(UnderwritingServiceImpl::performSoftPull method call at : dt.toString() , for loan acct id: softPullParams.getUserLoanAccountId());CreditBureauReportRequest request this.getCreditBureauReportRequest(softPullParams);RestTemplate restTemplate this.externalApiRestTemplateFactory.getRestTemplate(SOFT_PULL, error);HttpHeaders headers this.getHttpHeaders(softPullParams);HttpEntityCreditBureauReportRequest entity new HttpEntity(request, headers);long startTime System.currentTimeMillis();String uwServiceEndPoint /transaction;String callUrl String.format(%s%s, appConfig.getUnderwritingTransactionApiPrefix(), uwServiceEndPoint);ResponseEntityCreditBureauReportResponse responseEntity restTemplate.exchange(callUrl, HttpMethod.POST, entity, CreditBureauReportResponse.class);result responseEntity.getBody();long endTime System.currentTimeMillis();long timeDifference endTime - startTime;logger.info(Time taken for API call SOFT_PULL/performSoftPull call 1: timeDifference);} catch (HttpClientErrorException exception) {logger.error(HttpClientErrorException occurred while calling SOFT_PULL API, response string: exception.getResponseBodyAsString());throw exception;} catch (HttpStatusCodeException exception) {logger.error(HttpStatusCodeException occurred while calling SOFT_PULL API, response string: exception.getResponseBodyAsString());throw exception;} catch (Exception ex) {logger.error(Error occurred in performSoftPull. Detail error:, ex);throw ex;}return result; } 我们可以在application.yml文件中定义其他属性例如重试次数和重试之间的延迟 resilience4j.retry: configs: default: maxRetryAttempts: 3 waitDuration: 100 externalPartner: maxRetryAttempts: 2 waitDuration: 1000 instances: SOFT_PULL: baseConfig: externalPartner 我们指定后备方法fallbackMethod performSoftPull_Fallback。如果所有配置的重试尝试均失败则调用此方法在这种情况下是两个。 public CreditBureauReportResponse performSoftPull_Fallback(SoftPullParams softPullParams, ErrorsI error, Exception extPartnerException) {logger.info(UnderwritingServiceImpl::performSoftPull_Fallback - fallback , method called for soft pull api call);CreditBureauReportResponse creditBureauReportResponse null;String loanAcctId softPullParams.getUserLoanAccountId();ApplicantCoBorrowerIdsMapping applicantCoBorrowerIdsMapping this.uwCoBorrowerRepository.getApplicantCoBorrowerIdsMapping(loanAcctId);try {boolean result this.partnerServiceExceptionRepository.savePartnerServiceException(applicantCoBorrowerIdsMapping.getApplicantUserId(),applicantCoBorrowerIdsMapping.getLoanId(), PartnerService.SOFT_PULL.getValue(), GDS, null);if (!result) {logger.error(UnderwritingServiceImpl::performSoftPull_Fallback - Unable to save entry in the partner service exception table.);}LoanSubStatus loanSubStatus LoanSubStatus.PARTNER_API_ERROR;result this.loanUwRepository.saveLoanStatus(applicantCoBorrowerIdsMapping.getApplicantUserId(), applicantCoBorrowerIdsMapping.getLoanId(),IcwLoanStatus.INITIATED.getValue(), loanSubStatus.getName(), Partner Service Down, null);if (!result) {logger.error(UnderwritingServiceImpl::performSoftPull_Fallback - Unable to update loan status, sub status when partner service is down.);}} catch (Exception ex) {logger.error(UnderwritingServiceImpl::performSoftPull_Fallback - An error occurred while calling softPullExtPartnerFallbackService, detail error:, ex);}creditBureauReportResponse new CreditBureauReportResponse();UnderwritingApiError underwritingApiError new UnderwritingApiError();underwritingApiError.setCode(IC-EXT-PARTNER-1001);underwritingApiError.setDescription(Soft Pull API error);ListUnderwritingApiError underwritingApiErrors new ArrayList();underwritingApiErrors.add(underwritingApiError);creditBureauReportResponse.setErrors(underwritingApiErrors);return creditBureauReportResponse; } ​​​​​​​在这种情况下后备方法返回与原始方法相同的响应对象。但是我们还在数据存储中记录服务已关闭并保存状态并将指示符转发回消费者服务方法。然后该指示器会传递到消费移动应用程序提醒用户有关我们合作伙伴服务的问题。一旦问题得到纠正我们就会利用持久状态恢复工作流程并向移动应用程序发送通知表明可以继续正常操作。 2. 弹簧重试 在这种情况下我们需要安装spring-retry和spring-aspects包。对于与上面相同的方法我们将其替换为Retry注解 Retryable(retryFor {HttpClientErrorException.class, HttpStatusCodeException.class, Exception.class}, maxAttempts 2, backoff Backoff(delay 100)) public CreditBureauReportResponse performSoftPull(SoftPullParams softPullParams, ErrorsI error) { Spring 中的注释Retryable允许我们指定应该触发重试的多个异常类型。我们可以在注释的 value 属性中列出这些异常类型。 Retryable要为带注释的方法编写后备方法performSoftPull我们将使用Recover注释。当该方法performSoftPull由于指定的异常 ( HttpClientErrorException, HttpStatusCodeException, Exception) 而耗尽其重试尝试时将调用此方法。该Recover方法应该具有与该方法匹配的签名Retryable并添加异常类型作为第一个参数。 Recover public CreditBureauReportResponse fallbackForPerformSoftPull(HttpClientErrorException ex, SoftPullParams softPullParams, ErrorsI error) {// Fallback Implementation }Recover public CreditBureauReportResponse fallbackForPerformSoftPull(HttpStatusCodeException ex, SoftPullParams softPullParams, ErrorsI error) {// Fallback Implementation }Recover public CreditBureauReportResponse fallbackForPerformSoftPull(Exception ex, SoftPullParams softPullParams, ErrorsI error) {// Fallback Implementation } 结论 总之在 Spring 微服务中通过重试机制和回退方法有效处理 API 故障对于构建健壮的、以用户为中心的应用程序至关重要。这些策略确保应用程序保持功能并提供无缝的用户体验即使面对 API 故障也是如此。通过对暂时性问题实施重试并为更持久的故障定义回退方法Spring 应用程序可以在当今互联的数字世界中提供可靠性和弹性。 作者Amol Gote 更多技术干货请关注公号【云原生数据库】 squids.cn云数据库RDS迁移工具DBMotion云备份DBTwin等数据库生态工具。 irds.cn多数据库管理平台私有云。
http://www.zqtcl.cn/news/519860/

相关文章:

  • ASP网站建设实训报告总结宜昌本地网站建设
  • 甘肃省建设厅官方网站张睿建立网站服务器
  • 有没有做博物馆的3d网站网页美工设计岗前培训
  • 如何防止网站被盗长沙知名网站建设
  • 汕尾住房和建设局网站山西招标网
  • 网站建设那好山西建设厅网站
  • 2免费做网站外贸公司注册需要多少钱
  • 莘县网站定制安卓软件开发培训机构
  • 织梦视频网站源码有没有专门做名片的网站
  • 济南本地网站自己做的网站怎么置顶
  • wordpress能做多大的站好用的网站后台
  • 想自己做网站流程国家住建网查企业资质
  • 英文网站怎么设计google浏览器入口
  • 重庆网站建设公司魁网个人备案网站名
  • 怀柔营销型网站建设wordpress菜单定制
  • 大连装修网站推广天津市建设信息工程网
  • 服装网站建设建议域名注册最好的网站
  • 小游戏网站网络营销推广岗位
  • 做一百度网站保健品网站建设案例
  • 沙田镇仿做网站如何建设钓鱼网站
  • 如何用域名进网站企业做电商网站有哪些
  • soho做网站网站的k线图怎么做
  • 成都专业的网站建设公司做网站需要哪个专业
  • php彩票网站建设源码有人看片吗免费观看
  • 自己做网站的准备工作营销平台推广
  • 建站网站平台建站工具的优点
  • 各学院二级网站建设通报wordpress 修改admin
  • 网站建设加推广需要多少钱wordpress标签自动生成插件下载
  • 周村区建设局网站石家庄网站运营公司
  • 网站描述怎么设置wordpress仿模板