ActorRef actor = ...;
Flow<HttpRequest, HttpResponse, NotUsed> flow = Flow
.of(HttpRequest.class)
.via(Flow.fromSinkAndSource(
Sink
.actorRef(actor, "COMPLETED"),
Source
.actorRef(4, OverflowStrategy.fail())
.mapMaterializedValue(sourceActor -> {
actor.tell("REGISTER", sourceActor);
return sourceActor;
})
))
.map(info -> (HttpResponse) info);
connection.handleWith(flow, materializer);
我在接受连接时创建一个参与者,并使用该参与者处理 HttpRequest。
问题(1):有没有更好的方法来实现这个?
问题(2):现在,来自连接的请求被发送到同一个参与者,我可以token
从 HttpRequest 中检索一个。如何根据 ? 向特定参与者发送请求token
?下面的伪代码是我尝试做的。
Flow<HttpRequest, HttpResponse, NotUsed> flow = Flow
.of(HttpRequest.class)
.via(
.........................................................
String token = retrieveTokenFromHttpRequest(HttpRequest);
ActorRef actor = actorContainer.get(token);
.........................................................
Flow.fromSinkAndSource(
Sink
.actorRef(actor, "COMPLETED"),
Source
.actorRef(4, OverflowStrategy.fail())
.mapMaterializedValue(sourceActor -> {
actor.tell("REGISTER", sourceActor);
return sourceActor;
})
)
)
.map(info -> (HttpResponse) info);
connection.handleWith(flow, materializer);