我想使用spring重试实现断路器设计模式。我面临的主要问题是为所有请求打开电路。如果我从浏览器发出新请求,它仍然会继续重试。
我有一个RetryTemplate
,其CircuitBreakerRetryPolicy
定义如下:
@Configuration
public class MyApplicationConfig {
@Bean
public RetryTemplate retryTemplate(RetryPolicy cbRetry) {
RetryTemplate retryTemplate = new RetryTemplate();
FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();
fixedBackOffPolicy.setBackOffPeriod(1000);
retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
retryTemplate.setRetryPolicy(circuitBreakerRetryPolicy);
return retryTemplate;
}
@Bean("cbRetry")
public RetryPolicy circuitBreaker() {
CircuitBreakerRetryPolicy circuitBreakerRetryPolicy = new CircuitBreakerRetryPolicy();
circuitBreakerRetryPolicy.setResetTimeout(20000);
circuitBreakerRetryPolicy.setOpenTimeout(2000);
return circuitBreakerRetryPolicy;
}
}
然后我使用resttemplate
调用一个不存在的url,只是为了使调用失败,并计算重试次数。电路本应在2秒钟内打开,但如果我在第一次通话失败后再尝试另一次通话,它会继续重试。
如何使电路在给定的openTimeOut期间内对所有传入请求保持打开状态?
我通过将retrystate
提供给retryTemplate调用来试验它,但这也没有帮助。
谢谢!
spring重试
状态是线程绑定的。
您需要编写一个自定义策略来维护全局状态。
问题内容: 我已经使用CodeIgniter创建了一个webapp。我在应用程序中的几个地方都使用了ajax。 我想知道是否有一种方法可以停止对ajax控制器的直接访问和查询,并且仅允许处理源自页面的合法ajax请求。 谢谢。 问题答案: 是的,您可以毫无问题地做到这一点。CodeIgniter输入类具有一个称为is_ajax_request()的方法。只需在控制器操作开始时检查一下即可。例如:
问题内容: 我有一个react / redux应用程序,可从api服务器获取令牌。用户验证后,我想使所有axios请求都将该令牌作为Authorization标头,而不必手动将其附加到操作中的每个请求。我对React / Redux相当陌生,并且不确定采用最佳方法,也没有在Google上找到任何高质量的点击。 这是我的redux设置: 我的令牌存储在的redux存储中。 我对如何进行有点迷茫。我试
问题内容: 我似乎无法让$ httpProvider.interceptors实际进行拦截。我在JSFiddle上创建了一个示例,该示例记录了拦截器运行的时间以及$ http响应成功的时间。在成功返回响应之后,将运行请求拦截器。这似乎有些倒退。 我不能使用transformRequest,因为我需要更改配置中的参数。该部分未显示在示例中。 我正在使用AngularJS 1.1.5 http://j
目前,我正在使用mrecestQueue.cancelAll(getActive())在一个片段中的on Stop方法,但显然,当我将手机从横向移动到纵向时,它仍然返回请求中的数据,但会导致崩溃,因为持有人数据泄露已经存在了。有什么如何正确处理的示例代码吗?
我正在docker容器中部署一个应用程序,它在启动时随机分配端口。问题是我想使用< code>docker-compose,但是有没有一种方法可以使用docker-compose公开服务的所有端口?如果没有docker-compose,我会使用< code>docker run...-P 谢谢
但是在随机设置上面注释后的真实行为像:pod1、pod1、pod2、pod2、pod3、pod1、pod2、pod2....这是不正确的。 我们是否需要配置任何openshift配置,使其完善的RoundRoubin?