Camel Loadbalancer CircuitBreaker未按预期工作

时间:2015-11-25 08:26:32

标签: apache-camel

我们正在尝试在我们的产品中实施断路器模式。     我尝试实现它并观察如果我将阈值设置为'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();
    }
}

我只是被困在这一点上。

非常感谢任何帮助或建议。

先谢谢。

1 个答案:

答案 0 :(得分:0)

当我将我的camel-core版本从2.15.0更新为2.16.0时,问题得到了解决。

现在它按预期工作了。