我在我的java项目中使用akka框架来处理HTTP服务,这就是我使用javaDSL处理akka流的原因。那么,我的故事如下。 我创建了http缓存池(在我的演员中):
val pool = Http.get(getContext().system()).cachedHostConnectionPool(
"https://somehost.com",
ActorMaterializer.create(getContext().system())
)
然后我基于HttpRequest创建了一个源:
val source = Source.single(HttpRequest.GET("/resources/123/"))
然后我创建了用于将HttpReponse转换为精确实体的unmarshaller:
val unmarshaller = Jackson.unmarshaller(objectMapper, ResourceEntity.class)
下一步是通过池传递源来处理我的actor中的响应:
source.via(pool)
// TODO: unmarshalling
.to(Sink.actorRef(getSelf(), new FlowCompletedMessage()))
.run(ActorMaterializer.create(getContext().system()));
问题是如何将unmarshaller应用于此流程?我没有找到任何例子,我觉得自己就像一个试图将方形图推入圆孔的孩子......
答案 0 :(得分:0)
这些方面的东西:
source.via(pool)
.mapAsync(response => Unmarshal(response).to[T])
.to(Sink.actorRef(getSelf(), new FlowCompletedMessage()))
.run(ActorMaterializer.create(getContext().system()));