feat:Modify the annotations (#1693)

Co-authored-by: cooper30 <100362205+remedy30@users.noreply.github.com>
pull/1694/head
Fishtail 1 month ago committed by GitHub
parent 6992e38aaa
commit 518db402df
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -19,3 +19,4 @@
- [fix: fix lb configuration on bootstrap step.](https://github.com/Tencent/spring-cloud-tencent/issues/1690)
- [feat:support fault injection.](https://github.com/Tencent/spring-cloud-tencent/pull/1691)
- [feat: support config event and monitor address list.](https://github.com/Tencent/spring-cloud-tencent/pull/1692)
- [feat:Modify the annotations.](https://github.com/Tencent/spring-cloud-tencent/pull/1693)

@ -166,5 +166,4 @@ public class QuickstartCalleeController {
public String faultToleranceRaisedException(@PathVariable String exceptionType) throws IOException, TimeoutException {
return faultToleranceService.raisedException(exceptionType);
}
}

@ -55,7 +55,7 @@ public class FaultToleranceService {
public String failOver() {
LOG.info("Test failOver");
if (failOverCount.incrementAndGet() % 4 == 0) {
return "failOver successfailOverCount=" + failOverCount.get();
return "failOver success,failOverCount=" + failOverCount.get();
}
throw new RuntimeException("NO");
}
@ -64,7 +64,7 @@ public class FaultToleranceService {
public String forking() {
LOG.info("Test forking");
if (forkingCount.incrementAndGet() % 4 == 0) {
return "forking success, forkingCount=" + forkingCount.get();
return "forking success,forkingCount=" + forkingCount.get();
}
throw new RuntimeException("NO");
}
@ -79,17 +79,16 @@ public class FaultToleranceService {
case "TimeOutException":
LOG.info("Test failOver for raised TimeOutException");
if (failOverCount.incrementAndGet() % 4 == 0) {
return "failOver successfailOverCount=" + failOverCount.get();
return "failOver success,failOverCount=" + failOverCount.get();
}
throw new TimeoutException("NO");
default:
LOG.info("Test failOver for raised otherException");
if (failOverCount.incrementAndGet() % 4 == 0) {
return "failOver successfailOverCount=" + failOverCount.get();
return "failOver success,failOverCount=" + failOverCount.get();
}
throw new IOException("NO");
}
}
}

@ -17,11 +17,17 @@
package com.tencent.cloud.tsf.demo.consumer.controller;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import java.util.concurrent.atomic.AtomicInteger;
import com.tencent.polaris.api.utils.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.tsf.faulttolerance.annotation.TsfFaultTolerance;
import org.springframework.cloud.tsf.faulttolerance.model.TsfFaultToleranceStragety;
import org.springframework.tsf.core.TsfContext;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@ -38,11 +44,10 @@ public class SdkBaseTest {
@Autowired
private RestTemplate restTemplate;
// 调用一次provider接口
private final AtomicInteger failOverCount = new AtomicInteger(0);
@RequestMapping(value = "/echo-once/{str}", method = RequestMethod.GET)
public String restOnceProvider(@PathVariable String str,
@RequestParam(required = false) String tagName,
@RequestParam(required = false) String tagValue) {
public String restOnceProvider(@PathVariable String str, @RequestParam(required = false) String tagName, @RequestParam(required = false) String tagValue) {
if (!StringUtils.isEmpty(tagName)) {
TsfContext.putTag(tagName, tagValue);
}
@ -51,4 +56,96 @@ public class SdkBaseTest {
LOG.info("end call echo-once, the result is : " + result);
return result;
}
@TsfFaultTolerance(strategy = TsfFaultToleranceStragety.FAIL_FAST, fallbackMethod = "restProviderFailfast")
@RequestMapping(value = "/failfast/{str}", method = RequestMethod.GET)
public String failFast(@PathVariable String str) {
LOG.info("start call failfast:" + str);
String result = restTemplate.getForObject("http://provider-demo/error/" + str, String.class);
LOG.info("end call failfast-no-:" + str);
return result;
}
public String restProviderFailfast(String str) {
String result = "failfast-recall:" + str;
LOG.info(result);
return result;
}
@TsfFaultTolerance(strategy = TsfFaultToleranceStragety.FAIL_FAST, fallbackMethod = "restProviderFallback")
@RequestMapping(value = "/fallback/{str}", method = RequestMethod.GET)
public String fallBack(@PathVariable String str) {
LOG.info("start call fallback:" + str);
String result = restTemplate.getForObject("http://provider-demo/error/" + str, String.class);
LOG.info("end call fallback-no:" + result);
return result;
}
public String restProviderFallback(String str) {
String result = "fallback-recall:" + str;
LOG.info(result);
return result;
}
// The call failed. Fault tolerance retry twice. A total of three calls
@TsfFaultTolerance(strategy = TsfFaultToleranceStragety.FAIL_OVER, maxAttempts = 2, fallbackMethod = "restProviderFailover")
@RequestMapping(value = "/failover/{str}", method = RequestMethod.GET)
public String failOver(@PathVariable String str) {
LOG.info("start call failover:" + str);
String result = restTemplate.getForObject("http://provider-demo/error/" + str, String.class);
LOG.info("end call failover-no:" + str);
return result;
}
public String restProviderFailover(String str) {
String result = "failover-recall:" + str;
LOG.info(result);
return result;
}
// Ignore the RuntimeException exception, do not trigger fault tolerance, and retry will fail
@TsfFaultTolerance(strategy = TsfFaultToleranceStragety.FAIL_OVER, maxAttempts = 2, ignoreExceptions = {RuntimeException.class}, fallbackMethod = "restProviderFailoverException")
@RequestMapping(value = "/failover-exception/{str}", method = RequestMethod.GET)
public String failOverException(@PathVariable String str) throws InterruptedException {
String result = "";
LOG.info("start call failover-exception:" + str);
result = restTemplate.getForObject("http://provider-demo/error/" + str, String.class);
LOG.info("end call failover with exception:" + str);
return result;
}
public String restProviderFailoverException(String str) {
String result = "failover-exception-recall:" + str;
LOG.info(result);
return result;
}
@TsfFaultTolerance(strategy = TsfFaultToleranceStragety.FAIL_OVER, maxAttempts = 2, ignoreExceptions = {RuntimeException.class},
raisedExceptions = {Exception.class}, fallbackMethod = "restProviderFallback")
@RequestMapping(value = "/raisedException/{exceptionType}", method = RequestMethod.GET)
public String raisedException(@PathVariable String exceptionType) throws IOException, RuntimeException, TimeoutException {
String result = "";
// LOG.info("start call raisedException:" + exceptionType);
switch (exceptionType) {
case "RuntimeException":
LOG.info("Test failOver for raised RuntimeException");
throw new RuntimeException("NO");
case "TimeOutException":
LOG.info("Test failOver for raised TimeOutException");
if (failOverCount.incrementAndGet() % 3 == 0) {
return "failOver success,failOverCount=" + failOverCount.get();
}
throw new TimeoutException("NO");
default:
LOG.info("Test failOver for raised otherException");
if (failOverCount.incrementAndGet() % 3 == 0) {
return "failOver success,failOverCount=" + failOverCount.get();
}
throw new IOException("NO");
}
}
}

Loading…
Cancel
Save