Использование AbstractActor с Inject и Pops - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть Actor (extends AbstractActor), которому требуется дополнительная инъекция класса. Тем не менее, я не могу заставить это работать, как в моем контроллере, он говорит:

Compilation error[no suitable method found for actorRef(StreamingA[...]props,akka.actor.ActorSystem,akka.stream.Materializer)

Это мой код в контроллере:

public WebSocket wsSocket() {
  return WebSocket.Json.accept(
      request -> ActorFlow.actorRef(StreamingActor::props, actorSystem, materializer));
}

Потоковый актер:

public class StreamingActor extends AbstractActor {

    public static Props props(ActorRef actorRef, StreamingManager streamingManager) {
        return Props.create(StreamingActor.class, actorRef, streamingManager);
    }

    private final ActorRef out;
    private final StreamingManager streamingManager;

    @Inject
    public StreamingActor(ActorRef out, StreamingManager streamingManager) {
        this.out = out;
        this.streamingManager = streamingManager;
    }

    @Override
    public Receive createReceive() {
        return receiveBuilder()
                .match(ObjectNode.class, message -> {
                    Logger.debug("Received JSON message: " + message);
                    ObjectNode result = Json.newObject();
                    streamingManager.doJob();
                    result.put("result", "OK");
                    out.tell(result, self());
                })
                .build();
    }

}

Итак, как мне это определить, или мне нужно, чтобы StreamingManager был доступен другим способом?

...