0

Apache Camel Circuit Breaker ( 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 のメッセージに到達すると、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ヒューバート

4

1 に答える 1