gpt4 book ai didi

java - RabbitMQ 中的服务器端超时是什么?

转载 作者:行者123 更新时间:2023-11-30 07:12:43 25 4
gpt4 key购买 nike

前往 http://rmq.example.com:15672/#/connections显示打开的连接及其属性。一种属性称为“超时”。对于使用 RabbitMQ Java 客户端建立的连接,此值设置为 600。对于使用 node-amqp 库建立的连接,它为空。

我不知道如何更改它,甚至不知道它的作用。在 Java 库中,有一个 ConnectionFactory 有一个方法 setTimeout,但它设置了传递给 Socket.connect 的超时时间,即它是没有到达服务器的客户端超时(实际上它与 RMQ 页面上显示的 600 不一致)。我还尝试添加 timeoutconnectionTimeoutconnection_timeout 作为客户端属性,但这些不会影响 timeout。事实上,它们分别出现在客户端属性中(通过 REST API 检查):

"client_properties":{"connectiontimeout":"40000",
"connectionTimeout":"30000",
"connection_timeout", ... }

我不知道数字“600s”是从客户端发送的还是服务器默认值,甚至不知道它的作用。我正在查看 Java 库和 node-amqp 的源代码以支持一些证据,但想问问是否有人对此有更高层次的了解。

最佳答案

是心跳。这个同义词唯一明显的地方是 man page for rabbitmqctl :

timeout
Connection timeout / negotiated heartbeat interval, in seconds.

在 Java 客户端中,这是通过 ConnectionFactory.setRequestedHeartbeat(int seconds) 设置的。我读过心跳是服务器知道连接何时断开所必需的,但是我不知道为什么会这样,因为 AMQP 是应用层协议(protocol),而不是传输层,传输层管理连接何时开始和结束。

关于java - RabbitMQ 中的服务器端超时是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20129715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com