为什么 NodeJS 客户端不断断开与 RabbitMQ 代理的连接?

Why does NodeJS client continuously keep on disconnecting to RabbitMQ broker?

我在 Windows Server 2016 上安装了 RabbitMQ 代理。我必须使用 NodeJS 客户端连接到它,但它不断断开连接并再次连接到代理。你能建议可能出了什么问题吗?我浏览了很多文章,但没有解决我的问题。

为了实现这一点,我在 rabbitmq.config 文件中提到了 tcp keep-alive 但它并没有解决我的问题。

我的配置文件如下所示: rabbitmq.config(位置:C:\Users\\AppData\Roaming\RabbitMQ)

mqtt.listeners.tcp.default = 1883
## Default MQTT with TLS port is 8883
# mqtt.listeners.ssl.default = 8883

# anonymous connections, if allowed, will use the default
# credentials specified here
mqtt.allow_anonymous  = true
mqtt.default_user     = test
mqtt.default_pass     = test

mqtt.vhost            = dev
mqtt.exchange         = amq.topic
# 24 hours by default
mqtt.subscription_ttl = 86400000
mqtt.prefetch         = 10

net.ipv4.tcp_keepalive_time=60
net.ipv4.tcp_keepalive_intvl=20
net.ipv4.tcp_keepalive_probes=3

handshake_timeout = 60000

理想情况下,客户端应该只连接到代理一次,并继续侦听来自该代理的端口。它永远不应该在两者之间断开连接。

在对配置文件进行一些更改后,我总是停止 rabbitmq,然后使用 RabbitMQ 的 sbin 目录中的以下命令再次启动:

rabbitmq-service.bat stop
rabbitmq-service.bat install
rabbitmq-service.bat start

当我点击第二条命令时,出现错误,提示配置文件应为 Erlang 格式,扩展名为“.conf”。我也这样做了,但我又遇到了同样的问题。

配置中是否缺少任何内容?请提出建议。

我发现客户是敏感的,例如,如果您尝试两次确认同一条消息,他们将断开连接。连接到经纪人后,您是否正在做任何事情?设置已经存在的具有不同参数的队列,声明交换?