当前位置: 首页 > 知识库问答 >
问题:

利用伪码解码器处理伪码错误

百里阳平
2023-03-14

我已经创建了服务'A',它需要由服务'B'通过使用假客户端调用,如果服务'A'由于某些验证而失败,那么服务'A'会发送回包含以下详细信息的错误响应,(1)http状态代码(2)错误消息(3)自定义错误映射,它包含自定义错误代码和它们的错误消息,例如<“EMP-1001”,“无效雇员ID”>

请就此提供一些建议

共有1个答案

戚森
2023-03-14

您可以启用断路器,也可以根据返回的错误配置应用程序以应用不同的回退方法,请执行以下步骤:

1.-使能断路器本身

@SpringBootApplication
@EnableFeignClients("com.perritotutorials.feign.client")
@EnableCircuitBreaker
public class FeignDemoClientApplication {

2.-创建回退bean

@Slf4j
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class PetAdoptionClientFallbackBean implements PetAdoptionClient {
@Setter
    private Throwable cause;
@Override
    public void savePet(@RequestBody Map<String, ?> pet) {
        log.error("You are on fallback interface!!! - ERROR: {}", cause);
    }
}
    null

public class MyErrorDecoder implements ErrorDecoder {
private final ErrorDecoder defaultErrorDecoder = new Default();
@Override
    public Exception decode(String methodKey, Response response) {
        if (response.status() >= 400 && response.status() <= 499) {
            return new MyCustomBadRequestException();
        }
if (response.status() >= 500) {
            return new RetryableException();
        }
        return defaultErrorDecoder.decode(methodKey, response);
    }
}

@Bean
public MyErrorDecoder myErrorDecoder() {
  return new MyErrorDecoder();
}

@Bean
public Retryer retryer() {
    return new Retryer.Default();
}

您还可以将自定义项添加到复试器:


class CustomRetryer implements Retryer {
private final int maxAttempts;
    private final long backoff;
    int attempt;
public CustomRetryer() {
        this(2000, 5); //5 times, each 2 seconds
    }
public CustomRetryer(long backoff, int maxAttempts) {
        this.backoff = backoff;
        this.maxAttempts = maxAttempts;
        this.attempt = 1;
    }
public void continueOrPropagate(RetryableException e) {
        if (attempt++ >= maxAttempts) {
            throw e; 
        }
try {
            Thread.sleep(backoff);
        } catch (InterruptedException ignored) {
            Thread.currentThread().interrupt();
        }
    }
@Override
    public Retryer clone() {
        return new CustomRetryer(backoff, maxAttempts);
    }
}

如果您想获得一个关于如何在应用程序中实现Feign的函数示例,请阅读本文。

 类似资料:
  • 伪代码(pseudocode)是人为的非正式语言,帮助程序员开发算法。这里介绍的伪代码在开发的算法转换为结构化C++程序时特别有用。伪代码类似于日常英语,方便而且容易掌握,但不是实际计算机编程语言。伪代码程序并不在计算机上实际执行,而是帮助程序员先“构思”程序.再用C++之类的实际计算机编程语言编写。 本章介绍几个如何在开发结构化C++程序时有效利用伪代码的例子。 我们介绍的伪代码完全由字符构成,

  • 我试图安装我的工艺编码器包1.7.10。我已经下载了src forge包,正在使用终端。我用这个装的。http://www.minecraftforge.net/wiki/installation/source我找到了输入。/gradlew setupDecompWorkspace--refresh-dependencies的部分,它运行平稳,然后在结束时停止。我认为这与java所分配的内存有关。

  • 问题内容: 我想用Java创建一个简单的解析器,用于诸如语言(保持僵化)之类的“伪代码”。伪代码示例为- 请注意,上面的代码是严格的,因为一行上不能有多个语句,整数以$开头,浮点数以#开头等。 要解析此类代码,首先可以使用,然后使用正则表达式来匹配整数变量,浮点变量或关键字。 这种方法好吗?对于循环语句,我如何存储表达式,这样就不必在每次迭代中都进行标记化? 我可以考虑将表达式(例如#f = #f

  • 本文向大家介绍C#生成防伪码的思路及源码分享,包括了C#生成防伪码的思路及源码分享的使用技巧和注意事项,需要的朋友参考一下 摘 要 1. 生成多个防伪码,防伪码的长度和个数由用户指定。 2. 防伪码由"0123456789ABCDEFGHJKLMNPQRSTUVWXYZ"字符组成,生成的防伪码不可以重复,必须是唯一的。 3. 防伪码的生成要具有随机性。 4. 在以上要求达到的基础上,尽可优化程序的

  • 本文向大家介绍DBSCAN原理和算法伪代码,与kmeans,OPTICS区别相关面试题,主要包含被问及DBSCAN原理和算法伪代码,与kmeans,OPTICS区别时的应答技巧和注意事项,需要的朋友参考一下 参考回答: DBSCAN聚类算法原理 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类算法,它是一种基

  • 问题内容: 我正在尝试使用after伪元素向网站添加一些效果。 和样式表: 我看到正在应用.product-show .readMore.less的样式,但是当我从Chrome(最新版本)/ MacOS检查站点时,在HTML块中看不到::after表示法。我读到一些较旧的浏览器有时会出现问题,但是我认为,如果我正确定义样式,我应该至少可以看到:: after伪元素表示法。我究竟做错了什么? 问题答