【问题标题】:Micronaut Declarative HttpClient TimeoutMicronaut 声明式 HttpClient 超时
【发布时间】:2021-08-02 23:45:24
【问题描述】:

我有这个声明式客户端:

@Retryable(attempts = "5", multiplier = "1.2")
@Client("\${client-url}")
@Headers(
    Header(name = USER_AGENT, value = "Micronaut Http Client"),
)
interface MyApiClient {

    @Get("/locations?location={location}")
    suspend fun validationLocation(@QueryValue location: String) : LocationResponse
}

我已将客户端超时设置为 30 秒:

micronaut:
 http:
    client:
      read-timeout: 30s

我随机得到:

Client <package> received HTTP error response: Read Timeout
    2021-08-02T23:09:13.069278169Z io.micronaut.http.client.exceptions.ReadTimeoutException: Read Timeout
    2021-08-02T23:09:13.069283269Z  at io.micronaut.http.client.exceptions.ReadTimeoutException.<clinit>(ReadTimeoutException.java:26)
    2021-08-02T23:09:13.069287569Z  at io.micronaut.http.client.netty.DefaultHttpClient$11.exceptionCaught(DefaultHttpClient.java:2301)
    2021-08-02T23:09:13.069291069Z  at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:302)
    2021-08-02T23:09:13.069306269Z  at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:281)
    2021-08-02T23:09:13.069309969Z  at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:273)
    2021-08-02T23:09:13.069313269Z  at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireExceptionCaught(CombinedChannelDuplexHandler.java:424)
    2021-08-02T23:09:13.069316669Z  at io.netty.channel.ChannelHandlerAdapter.exceptionCaught(ChannelHandlerAdapter.java:92)
    2021-08-02T23:09:13.069319769Z  at io.netty.channel.CombinedChannelDuplexHandler$1.fireExceptionCaught(CombinedChannelDuplexHandler.java:145)
    2021-08-02T23:09:13.069323069Z  at io.netty.channel.ChannelInboundHandlerAdapter.exceptionCaught(ChannelInboundHandlerAdapter.java:143)
    2021-08-02T23:09:13.069326169Z  at io.netty.channel.CombinedChannelDuplexHandler.exceptionCaught(CombinedChannelDuplexHandler.java:231)
    2021-08-02T23:09:13.069329469Z  at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:302)
    2021-08-02T23:09:13.069332669Z  at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:281)
    2021-08-02T23:09:13.069335869Z  at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:273)
    2021-08-02T23:09:13.069339069Z  at io.netty.handler.timeout.ReadTimeoutHandler.readTimedOut(ReadTimeoutHandler.java:98)
    2021-08-02T23:09:13.069342369Z  at io.netty.handler.timeout.ReadTimeoutHandler.channelIdle(ReadTimeoutHandler.java:90)

造成这种非常烦人的行为的原因是什么?

【问题讨论】:

标签: kotlin micronaut micronaut-client


【解决方案1】:

这个问题似乎与同一个问题有关:Micronaut ReadTimeoutException

显然配置没有注入。您可能必须以编程方式设置它。

【讨论】:

  • 是否有关于如何以编程方式设置它的文档?
【解决方案2】:

显然,从函数中删除 suspend 并使其返回 Single&lt;LocationResponse&gt; 会使超时消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多