ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springboot与resilience4j集成

2021-11-11 18:03:22  阅读:239  来源: 互联网

标签:集成 web springboot reqVo dorisDemo resilience4j org import


原创转载请注明出处: https://www.cnblogs.com/agilestyle/p/15166657.html

package com.test.resilience4j.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
import org.apache.commons.lang.StringUtils;
import org.apache.dubbo.config.annotation.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;

/**
* springboot与resilience4j集成
*
* <dependency>
* <groupId>io.github.resilience4j</groupId>
* <artifactId>resilience4j-spring-boot2</artifactId>
* <version>1.7.1</version>
* </dependency>
*
*
* 需注意的地方:
* 1、name = "cp-auth-web" 和resilience4j.circuitbreaker.instances.cp-auth-web.base-confi须一致
* 2、@RequestMapping请求方法和fallbackMethod方法的参数须一致
* 3、不能try...catch...捕获异常
* @author nanfengxiangbei
* @date 2021-11-12
*/
@RequestMapping("/content")
@RestController
public class OttContentFallBackController {
private static final Logger logger = LoggerFactory.getLogger(OttContentFallBackController.class);
private static final Logger mockLog = LoggerFactory.getLogger("OttContentMockController");

@Reference
private IServiceProduct productService;

@Reference(check = false, mock = "true")
private IUnityAuthService unityAuthService;


@RequestMapping(value = "/fallback")
@CrossOrigin(origins = "*")
@CircuitBreaker(name = "cp-auth-web", fallbackMethod = "fallbackTest")
public String fallBack(@RequestBody OttProductContentReqVo reqVo, HttpServletRequest request, HttpServletResponse response) {

OttContentRespVo respVo = new OttContentRespVo("cp同步内容到hd成功", "000");
logger.debug("fallbackTest请求开始" + JSON.toJSONString(reqVo));

ServiceProduct serviceProduct = productService.getServiceProductByProductCode(reqVo.getProductID());
logger.debug("获取产品信息:" + JSON.toJSONString(serviceProduct));

UnityAuth dorisDemo = new UnityAuth();
dorisDemo.setContentId(reqVo.getContentID());
dorisDemo.setProductCode(serviceProduct.getProductCode());
dorisDemo.setCreateTime(new Date());
dorisDemo.setRouteId(System.currentTimeMillis());
dorisDemo.setAccount("136870000000");
dorisDemo.setAllPass(0);
dorisDemo.setResult(0);
dorisDemo.setRouteEnd(System.currentTimeMillis());
dorisDemo.setRequestBody(JSON.toJSONString(dorisDemo));

// 调用服务降级dubbo
String message = unityAuthService.add(dorisDemo);
if (!StringUtils.isEmpty(message)) {
mockLog.error(message);
}
return JSONObject.toJSONString(respVo);
}

/**
* 当请求发生异常时,fallbackMethod里指定调用此方法
*
* @param reqVo 请求参数
* @param request 请求参数
* @param response 响应参数
* @param e 异常
* @return 响应消息
*/
private String fallbackTest(@RequestBody OttProductContentReqVo reqVo,
HttpServletRequest request,
HttpServletResponse response,
RuntimeException e) {
mockLog.error("resilience4j invoked with operation: " + reqVo.getAction() + ", \nexception:" + e);
OttContentRespVo respVo = new OttContentRespVo("cp同步内容到hd成功", "000");
return JSONObject.toJSONString(respVo);
}
}

标签:集成,web,springboot,reqVo,dorisDemo,resilience4j,org,import
来源: https://www.cnblogs.com/nanfengxiangbei/p/15541026.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有