【发布时间】:2016-01-07 05:22:53
【问题描述】:
我想试用 Apache Camel 断路器 (http://camel.apache.org/load-balancer.html) 模式。它的行为不像我想要的那样。
骆驼路由
我的路由是这样的
from("direct:foo")
.loadBalance()
.circuitBreaker(1, 5000, HustException.class).to("direct:pleaseHoldTheLine")
.to("direct:bar");
from("direct:bar")
.process(exchange -> {
Integer value = exchange.getIn().getBody(Integer.class);
System.out.println("[BAR] " + value);
if (value.equals(12)) {
throw new HustException();
}
});
from("direct:pleaseHoldTheLine")
.process(exchange -> {
Integer value = exchange.getIn().getBody(Integer.class);
System.out.println("[PLEASE_HOLD_THE_LINE] " + value);
});
主要应用
主应用程序每秒将整数值从 0 到 99 的消息触发到 foo 路由。
我的期望:
到达带有 12 的 Message 时,foo 路由会引发异常,并且 pleaseHoldTheLine 路由应该介入。5 秒后 foo 路由会再次被询问,如果没有发生异常,则 foo 路由将再次处理。
会发生什么:
[PLEASE_HOLD_THE_LINE] 0
[PLEASE_HOLD_THE_LINE] 1
[PLEASE_HOLD_THE_LINE] 2
[PLEASE_HOLD_THE_LINE] 3
[PLEASE_HOLD_THE_LINE] 4
[PLEASE_HOLD_THE_LINE] 5
[PLEASE_HOLD_THE_LINE] 6
[PLEASE_HOLD_THE_LINE] 7
[PLEASE_HOLD_THE_LINE] 8
[PLEASE_HOLD_THE_LINE] 9
[PLEASE_HOLD_THE_LINE] 10
[PLEASE_HOLD_THE_LINE] 11
[PLEASE_HOLD_THE_LINE] 12
[PLEASE_HOLD_THE_LINE] 13
[PLEASE_HOLD_THE_LINE] 14
...
BW 休伯特
【问题讨论】:
标签: java apache-camel integration circuit-breaker