关于java springboot webflux with resilience4j(不是SpringCloud断路器)的小问题。
我有以下直截了当的建议:
@TimeLimiter(name = "methodOne", fallbackMethod = "fallbackMethod")
public Mono<String> methodOne(@RequestParam(value = "name", defaultValue = "World") String name) {
return WebClient.builder().baseUrl("http://localhost:8081/serviceBgreeting?name=" + name).build().get().retrieve().bodyToMono(String.class);
}
@TimeLimiter(name = "methodTwo", fallbackMethod = "fallbackMethod")
public Mono<String> methodTwo(@RequestParam(value = "name", defaultValue = "World") String name) {
return WebClient.builder().baseUrl("http://localhost:8082/anotherMethodTwo?name=" + name).build().get().retrieve().bodyToMono(String.class);
}
以及一个由所有调用者共享的被调用者fallbackmethod,如下所示:
public Mono<Object> fallBackMethod(Exception exception) {
System.out.println("For debug purpose, I need to know what is the exact method falling back to this fallback method");
return //the fallback thing needed;
检索methodone或methodtwo这两个方法中的哪一个实际上是此回退的触发器的最佳方法是什么?
我有1000多个方法使用这种模式,所以我不能只创建1000多个回退方法(就像methodone掉到fallbackone,methodtwo掉到fallbacktwo等等,我不能)
我确信有一个聪明的方法来获取触发回退的方法名。
尝试了stackwalker,它只提供(fallbackmethod、invoke、fallback、lambda$reactornorrorresume$1、onerror等),但没有提供触发回退的方法。
请帮点忙。
谢谢您
1条答案
按热度按时间j8yoct9x1#
你能试着执行这个吗
fallbackMethod
我们正在收集执行调用中可用方法的列表,如果最近的调用方存在,则从堆栈跟踪检查中收集。这是在打印类似的东西
我们可以从这里提取方法名。
我的来电者就是这样的