【发布时间】:2017-05-10 14:58:14
【问题描述】:
我正在使用 Akka 流和 Akka HTTP 构建数据管道。用例非常简单,接收来自用户的 Web 请求,该请求将做两件事。首先通过调用 3rd 方 API 创建会话,然后将此会话提交到某个持久存储,当我们收到会话时,它将代理原始用户请求但添加会话数据。
我已经开始研究数据管道的第一个分支,即会话处理,但我想知道是否有更优雅的方式将来自第 3 方 API 的 HTTP 响应解组到我目前正在使用的 POJO Jackson.unmarshaller.unmarshal 返回一个 CompletionStage<T>,然后我必须将其解包到 T。它不是很优雅,我猜 Akka HTTP 有更聪明的方法来做到这一点。
这是我现在的代码
private final Source<Session, NotUsed> session =
Source.fromCompletionStage(
getHttp().singleRequest(getSessionRequest(), getMat())).
map(r -> Jackson.unmarshaller(Session.class).unmarshal(r.entity(), getMat())).
map(f -> f.toCompletableFuture().get()).
alsoTo(storeSession);
【问题讨论】:
标签: java akka-http akka-stream