我们正在尝试在我们的产品中实施断路器模式。 我尝试实现它并观察如果我将阈值设置为'0'它工作正常。但是任何值> 0它只是等待2秒并允许请求通信外部休息服务。
我尝试了下面的简单示例,其中定时器组件每1秒触发一次消息,在我的处理器中,我写了逻辑,就像它会抛出MyCustomException 3次,然后断路器将进入打开状态,它应该等待等待10秒我阅读了camel文档。但它只是阻止请求2秒,然后允许请求处理。
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
public class CamelHttp {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("timer://simpleTimer?period=1000")
.setBody(simple("Hello from timer at ${header.firedTime}"))
.loadBalance()
.circuitBreaker(2, 10000, MyCustomException.class)
.process(new MyProcessor())
.to("mock:result");
}
});
context.start();
Thread.sleep(20000);
context.stop();
}
}
我只是被困在这一点上。
非常感谢任何帮助或建议。
先谢谢。
答案 0 :(得分:0)
当我将我的camel-core版本从2.15.0更新为2.16.0时,问题得到了解决。
现在它按预期工作了。