gpt4 book ai didi

c# - Rabbitmq 空闲连接断开

转载 作者:行者123 更新时间:2023-12-02 03:20:11 28 4
gpt4 key购买 nike

我有一个 .NET Windows 服务作为消费者/订阅者运行,它正在监听消息队列。

Windows 服务与安装rabbit mq 服务器软件的计算机运行在同一台计算机上。

如果队列空闲 60 分钟,就会导致连接被丢弃(我在监视 UI 仪表板时知道这一点),并使 Windows 服务进入不良状态。

事实证明,解决这个问题非常令人沮丧。我已经在rabbit mq客户端上应用了心跳设置,但这没有效果。

以下错误是连接断开时我在日志文件中收到的错误

=ERROR REPORT==== 22-Aug-2017::12:20:29 ===
closing AMQP connection <0.1186.0> ([FE80::C00E:F801:A2A7:8530]:61481 ->
[FE80::C00E:F801:A2A7:8530]:5672):
missed heartbeats from client, timeout: 30s

Rbbit mq 服务器日志文件设置:[{兔子,[{心跳,60}]}]。

客户端代码:

var connectionFactory = new ConnectionFactory
{
HostName = hostName,
UserName = userName,
Password = password,
RequestedHeartbeat = heartBeat,
AutomaticRecoveryEnabled = true,
NetworkRecoveryInterval = TimeSpan.FromSeconds(numberOfSecondsInterval),
RequestedConnectionTimeout = RequestedConnectionTimeoutInMiliseconds
};

if (port > 0)
connectionFactory.Port = port;

var connection = connectionFactory.CreateConnection();

var model = connection.CreateModel();

model.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);

return new Tuple<IConnection, IModel>(connection, model);

上面的心跳值设置为30秒,

网络恢复值设置为 10 秒 &

请求连接超时设置为2秒

我不知道在配置方面我还缺少什么?

运行上面的服务器是Windows 2012 R2

基本上,我希望看到连接始终保持在适当的位置,无论空闲时间如何。

是否有 Windows 操作系统级别的 TCP 保持事件设置我需要确保也已到位?

Rabbit MQ版本为3.6.8

最佳答案

通过应用 this SO post 中引用的重新连接逻辑,我成功地阻止了 RabbitMQ 服务器上的空闲连接丢失(60 分钟后)。 .

注意:答案已更新,最新版本的 RabbitMQ 客户端已启用自动连接恢复,因此不需要手动重新连接逻辑。在我的情况下情况并非如此,因为我已经应用了这些设置,但我仍然看到连接在 60 分钟空闲时间后断开。我的场景中的客户端和服务器位于同一台机器上。

如果有人知道 60 分钟空闲时间设置的来源,我将不胜感激,我扫描了所有的rabbitmq 配置设置,但找不到任何与之相关的内容。

关于c# - Rabbitmq 空闲连接断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45820732/

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