저는 Akka Distributed Pub/Sub를 사용하고 있으며 발행인과 가입자가 하나입니다. 내 발행인은 구독자보다 훨씬 빠릅니다. 특정 시점 이후에 게시자의 속도를 늦출 수있는 방법이 있습니까?Akka Distributed Pub/Sub 백 프레셔
게시자 코드 :
public class Publisher extends AbstractActor {
private ActorRef mediator;
static public Props props() {
return Props.create(Publisher.class,() -> new Publisher());
}
public Publisher() {
this.mediator = DistributedPubSub.get(getContext().system()).mediator();
this.self().tell(0, ActorRef.noSender());
}
@Override
public Receive createReceive() {
return receiveBuilder()
.match(Integer.class, msg -> {
// Sending message to Subscriber
mediator.tell(
new DistributedPubSubMediator.Send(
"/user/" + Subscriber.class.getName(),
msg.toString(),
false),
getSelf());
getSelf().tell(++msg, ActorRef.noSender());
})
.build();
}
}
가입자 코드 :
public class Subscriber extends AbstractActor {
static public Props props() {
return Props.create(Subscriber.class,() -> new Subscriber());
}
public Subscriber() {
ActorRef mediator = DistributedPubSub.get(getContext().system()).mediator();
mediator.tell(new DistributedPubSubMediator.Put(getSelf()), getSelf());
}
@Override
public Receive createReceive() {
return receiveBuilder()
.match(String.class, msg -> {
System.out.println("Subscriber message received: " + msg);
Thread.sleep(10000);
})
.build();
}
}