【发布时间】:2016-05-20 01:30:48
【问题描述】:
我的应用程序有一个 Akka-Websocket 接口。 Web 套接字由一个参与者订阅者和一个参与者发布者组成。订阅者通过将命令发送给相应的参与者来处理命令。发布者监听事件流并将更新信息发布回流(最终发布到客户端)。这很好用。
我的问题:订阅者如何将事件发送回流?例如确认接收到的命令的执行。
public class WebSocketApp extends HttpApp {
private static final Gson gson = new Gson();
@Override
public Route createRoute() {
return get(
path("metrics").route(handleWebSocketMessages(metrics()))
);
}
private Flow<Message, Message, ?> metrics() {
Sink<Message, ActorRef> metricsSink = Sink.actorSubscriber(WebSocketCommandSubscriber.props());
Source<Message, ActorRef> metricsSource =
Source.actorPublisher(WebSocketDataPublisherActor.props())
.map((measurementData) -> TextMessage.create(gson.toJson(measurementData)));
return Flow.fromSinkAndSource(metricsSink, metricsSource);
}
}
一个不错的解决方案可能是订阅参与者(上面代码中的 WebSocketCommandSubscriber 参与者)可以将消息发送回流,例如 sender().tell(...)...
【问题讨论】:
标签: akka akka-stream akka-http