scala - http4s 客户端返回部分有效载荷
问题描述
我正在使用AsyncHttpClient
http4s-0.19.0-M2 进行客户端调用:
for {
resp <- http.expectOr[String](GET(url)){ error =>
error.as[String].map(body => throw new Exception(...)
}
_ <- doSomethingWithResponse(resp)
} yield ()
有时远程端超时,我在日志中看到以下内容:
java.util.concurrent.TimeoutException: Request timeout to remote.server.com after 60000 ms
at org.asynchttpclient.netty.timeout.TimeoutTimerTask.expire(TimeoutTimerTask.java:43)
at org.asynchttpclient.netty.timeout.RequestTimeoutTimerTask.run(RequestTimeoutTimerTask.java:50)
at shade.cda.io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:670)
at shade.cda.io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:745)
at shade.cda.io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:473)
at shade.cda.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
但是,它看起来doSomethingWithResponse()
仍然被调用,但带有部分resp
字符串。有没有办法改变这种行为,以便在http.expectOr
无法检索整个有效负载时调用失败?
解决方案
推荐阅读
- spring - @ManyToOne 和 @LazyToOne 的 Fetch 类型用例
- javascript - PHP - 获取数据时的 Ajax 自动刷新页面
- java - Eclipse - 文件的 Java 本地历史记录
- mysql - 有没有办法将列中的 2 个值分成两个单独的列?
- php - Laravel 无法添加或更新子行:外键约束失败
- javascript - 我如何在 react.js 中像一堆卡片一样显示上传的照片?
- javascript - Angular7:服务工作者没有按预期运行
- mysql - 如何在mysql中的varchar变量中进行自动递增
- sql - 看不懂结果
- javascript - 不使用反应状态时对表数据进行排序