作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Akka Http,我将路由定义为
val route = (path(HttpConstants.CreateJob) & post) {
(entity(as[JobDetailsEntity]) & entity(as[JobEntity])) {
(jobDetailsEntity: JobDetailsEntity, jobEntity: JobEntity) =>
val updatedJobEntity = jobEntity.copy(runningSince = DateTime.now().getMillis)
val updatedJobDetailsEntity = jobDetailsEntity.copy(runningSince = DateTime.now().getMillis).copy(modify_date = DateTime.now().getMillis)
complete {
createJobDetails(updatedJobDetailsEntity).map(_.asJson)
createJob(updatedJobEntity).map(_.asJson)
}
}
在这里,我试图在同一个 POST 调用中解码两个实体,当我的 json Payload id 很小时它工作,即几个字节然后它工作正常,一旦有效负载大小增加,即大约 10-20 kb,它会抛出错误:
Substream Source 不能多次实现
最佳答案
请参阅https://github.com/akka/akka-http/issues/745#issuecomment-271571342
简而言之,如果您需要对您的实体进行两次解码,您应该首先使用 toStrict 以确保整个实体都缓冲在内存中,否则它会被第一次解码过程耗尽而无法用于第二个。
如果实体足够小以适合 akka 的内部缓冲区,那么它碰巧在没有 toStrict 的情况下也能正常工作,那么实际上不涉及耗尽。
关于scala - Akka http -错误 :Substream Source cannot be materialized more than once If Payload size increased,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44950948/
我是一名优秀的程序员,十分优秀!