2018-03-13 23:45:55 +09:00
|
|
|
/*
|
2019-01-02 18:55:26 +08:00
|
|
|
* Copyright (C) 2018-2019 Lightbend Inc. <https://www.lightbend.com>
|
2018-03-13 23:45:55 +09:00
|
|
|
*/
|
|
|
|
|
|
2017-05-11 11:59:28 +03:00
|
|
|
package jdocs.circuitbreaker;
|
2017-03-30 15:51:51 +01:00
|
|
|
|
|
|
|
|
import akka.actor.AbstractActor;
|
|
|
|
|
import akka.pattern.CircuitBreaker;
|
2018-04-11 16:47:36 +02:00
|
|
|
import java.time.Duration;
|
2017-03-30 15:51:51 +01:00
|
|
|
|
|
|
|
|
import java.util.Optional;
|
|
|
|
|
import java.util.function.BiFunction;
|
|
|
|
|
|
|
|
|
|
public class EvenNoFailureJavaExample extends AbstractActor {
|
2019-01-12 04:00:53 +08:00
|
|
|
// #even-no-as-failure
|
|
|
|
|
private final CircuitBreaker breaker;
|
|
|
|
|
|
|
|
|
|
public EvenNoFailureJavaExample() {
|
|
|
|
|
this.breaker =
|
|
|
|
|
new CircuitBreaker(
|
|
|
|
|
getContext().getDispatcher(),
|
|
|
|
|
getContext().getSystem().getScheduler(),
|
|
|
|
|
5,
|
|
|
|
|
Duration.ofSeconds(10),
|
|
|
|
|
Duration.ofMinutes(1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int luckyNumber() {
|
|
|
|
|
BiFunction<Optional<Integer>, Optional<Throwable>, Boolean> evenNoAsFailure =
|
|
|
|
|
(result, err) -> (result.isPresent() && result.get() % 2 == 0);
|
|
|
|
|
|
|
|
|
|
// this will return 8888 and increase failure count at the same time
|
|
|
|
|
return this.breaker.callWithSyncCircuitBreaker(() -> 8888, evenNoAsFailure);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// #even-no-as-failure
|
|
|
|
|
@Override
|
|
|
|
|
public Receive createReceive() {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2017-03-30 15:51:51 +01:00
|
|
|
}
|