Programing/Akka

Akka Actor Throttle

BUST 2017. 6. 24. 15:46

Akka Actor Throttle

Akka가 2.5 버전이 되면서 TimerBasedThrottler은 더 이상 사용되지 않고, Stream의 Throttle를 기능을 이용하여 구현을 할수 있다.

Source Code

import java.util.concurrent.TimeUnit;
import scala.concurrent.duration.FiniteDuration;
import akka.NotUsed;
import akka.actor.ActorRef;
import akka.actor.ActorSystem;
import akka.stream.ActorMaterializer;
import akka.stream.Materializer;
import akka.stream.OverflowStrategy;
import akka.stream.ThrottleMode;
import akka.stream.javadsl.Sink;
import akka.stream.javadsl.Source;
 
final ActorSystem system = null; // TODO 실제 ActorSystem 
final ActorRef target = null; // TODO 타겟 ActorRef 
final Materializer materializer = ActorMaterializer.create(system);
 
final ActorRef throttler =
  Source.actorRef(1000, OverflowStrategy.dropNew())
    .throttle(100,  FiniteDuration.create(1, TimeUnit.SECONDS), 10, ThrottleMode.shaping())
    .to(Sink.actorRef(target, NotUsed.getInstance()))
    .run(materializer);

활용 방법

  • 데이터 Reader의 속도 제한
  • 분당 API 호출 제한


'Programing > Akka' 카테고리의 다른 글

Akka Stream을 이용한 Kafka Producer 개발  (0) 2018.06.02
Persistence Actor  (0) 2018.05.27
Akka Cluster  (0) 2017.10.22
Akka Tutorial  (0) 2017.07.01
Akka Actor  (0) 2017.06.25