我正在使用spring-cloud-starter-feign
中的feign
向已定义的后端发送请求。我想使用Hystrix
作为断路器,但只用于一种用例:如果后端响应HTTP 429:太多请求
代码,我的假客户机应该等待一个小时,直到它再次联系到真正的后端。在此之前,应该执行回退方法。
我必须如何配置我的Spring Boot(1.5.10)应用程序才能实现这一点?我看到了许多配置的可能性,但只有很少的例子--在我看来--不幸的是,没有围绕用例解决。
这可以通过定义ErrorDecoder
和手动控制Hystrix
断路器来实现。您可以检查异常的响应代码,并提供您自己的后退。此外,如果希望重试请求,请在RetryException
中包装并抛出异常。
为了满足您的重试需求,还可以注册一个具有适当配置的Retryer
bean。请记住,使用retryer
将在持续时间内绑定线程。Retryer
的默认实现也使用指数退避策略。
以下是摘自OpenFeign
文档的ErrorDecoder示例:
public class StashErrorDecoder implements ErrorDecoder {
@Override
public Exception decode(String methodKey, Response response) {
if (response.status() >= 400 && response.status() <= 499) {
return new StashClientException(
response.status(),
response.reason()
);
}
if (response.status() >= 500 && response.status() <= 599) {
return new StashServerException(
response.status(),
response.reason()
);
}
return errorStatus(methodKey, response);
}
}
您可以在运行时设置此属性强制打开断路器
hystrix.command.hystrixcommandkey.circuitbreaker.forceOpen
ConfigurationManager.getConfigInstance()
.setProperty(
"hystrix.command.HystrixCommandKey.circuitBreaker.forceOpen", true);
用自己的命令替换HystrixCommandKey
。您将需要恢复这个断路器回到关闭后所需的时间。
问题内容: 当我向某个服务器发送请求时,将出现303响应,然后是请求的响应以及200状态代码。有趣的是,我只能在开发人员控制台的网络视图中看到此内容。当检查我的$ .ajax()请求的状态码和响应时,将有第二个请求的响应以及200 http状态码。 问题在于,似乎第二个请求正在缓存(尽管状态码为200),我真的需要它不可缓存。因此,我真的很想干预使用http 303状态代码进行的转发过程。我希望我
所以我正处于学习Meteor和React的开始阶段,我刚刚完成了制作待办事项列表的教程。 在实现中,我们在顶部有一个复选框,允许我们在完成的任务和所有任务之间切换。这被设置为一个状态。 每个任务旁边都有复选框,可以将任务显示为已完成或未完成。 我的问题是,这两个复选框都是实时变化的,但只有前者被指定为状态变量?为什么任务复选框是道具?
在我看来,传奇模式在很多方面都是聚合模式的倒置。首先将命令处理成域事件,然后在聚合的情况下将此域事件应用到状态中是很有用的,但我认为在saga的情况下,域事件是已经发生的事情的文档,应该在试图对状态做出反应之前应用到状态中。 现在我的问题是:对于模块,有没有一种方法可以将命令配置为首先,然后?或者这是一个严重的bug,需要在一般情况下进行修复?
所以我有一个sub-reddits列表,我用urllib打开它们。在我仔细研究之后,urllib最终失败了: 做了一些研究,我发现reddit通过IP限制了对其服务器的请求数量: 每两秒钟不要提出超过一个请求。请求的突发有一定的空间,但要保持理智。一般来说,一分钟内不要超过30个请求。 所以我想我应该使用将我的请求限制在每10秒一页。这最终也失败了。 上面的引用是从reddit API页面获取的。
问题内容: 我处于状态的对象数组: 我需要能够基于id属性搜索items数组,然后更新对象属性。 我可以使用id参数通过数组或在数组上获取对象。 我遇到的麻烦是更新数组,然后更新状态而不会发生突变。 此时,我有一个匹配的对象,可以使用对象传播来更新它的属性: 我的问题是我该如何更新状态,以使其覆盖初始查找操作返回的对象? 问题答案: 您的更新功能如下所示 你这样使用它 毛吧? 如果您继续以这种方式
主要内容:1 1xx:信息,2 2xx:成功,3 3xx:重定向,4 4xx:客户端错误,5 5xx:服务器错误当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。 HTTP状态码的英文为HTTP Status Code。下面是常见的HTTP状态码: 1xx - 这意味着已收到请求,并且该过程正在继续。 2xx - 这意味着已成功接收,理解并接受了该