У меня есть 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 был доступен другим способом?