【问题标题】:Does Spring AMQP CorrelationData getFuture wait indefinitely without timeout?Spring AMQP CorrelationData getFuture 是否无限期等待而没有超时?
【发布时间】:2022-01-04 13:29:02
【问题描述】:

在 Publisher 确认的上下文中,当等待 CorrelationData 的未来 (SettableListenableFuture#get()) - 它是无限期等待还是在水下配置了超时?

【问题讨论】:

    标签: java asynchronous rabbitmq timeout spring-amqp


    【解决方案1】:

    它确实会无限期地等待。没有任何意见,所有内容都直接委托给 java.util.concurrent.FutureTask 内部的 org.springframework.util.concurrent.SettableListenableFuture 实现。

    不知道为什么会出现这个问题,但在正常情况下,当经纪人启动时,它会在合理的有限时间内回答确认。如果代理不可用,您将在代码中到达CorrelationData.getFuture() 之前失败。

    【讨论】:

    • 我的建议是永远不要在没有超时的情况下拨打get()。如果在收到确认之前关闭通道,框架将异常完成未来,但通常最好的做法是始终使用超时。
    • 谢谢!我正在处理代理到达vm_memory_high_watermark 并因此阻塞连接的情况。我正在尝试确定适当的超时,并认为如果它在某个时候抛出异常本身可能不需要它。这是因为阻塞的连接不会导致任何地方的异常。
    • 请参阅 ConnectionBlockedEvent 用于此目的:docs.spring.io/spring-amqp/docs/current/reference/html/…
    猜你喜欢
    • 2011-02-05
    • 1970-01-01
    • 2016-06-26
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2021-11-18
    相关资源
    最近更新 更多