客户端丢失检测信号,超时:30 秒 - RabbitMQ



我正在使用rabbitmq进行发布/订阅。我有两个微服务,它们通过rabbitmq交换相互通信。微服务1发布一些数据,微服务2使用这些数据。发布和订阅的速度非常少,每天大约100次。rabbitmq随机抛出"客户端错过的心跳,超时:30 秒"。 这就是为什么我的应用程序错误显示为">队列关闭"的原因。每当我重新启动队列时,服务都可以使用它并开始工作。

我正在使用 docker 和 node 进行微服务。 和 https://www.npmjs.com/package/rabbot npm 包用于rabbitmq实现。

这是我的rabbitmq config

{
"connection": {
"server": [
"rabbitmq"
],
"port": 5672,
"vhost": "%2f",
"timeout": 4000,
"waitMin": 10000,
"waitIncrement": 3000
},
"exchanges": [
{
"name": "save-customer",
"type": "topic",
"persistent": true,
"autoDelete": true
},
{
"name": "poison-ex",
"type": "direct",
"persistent": true,
"durable": true,
"autoDelete": true
}
],
"queues": [
{
"name": "save-customer-q",
"autoDelete": true,
"subscribe": true,
"deadLetter": "poison-ex"
},
{
"name": "poison-q",
"noAck": false,
"autoDelete": false,
"durable": true,
"poison": true
}
],
"bindings": [
{
"exchange": "save-customer",
"target": "save-customer-q",
"keys": [
"send-customer-data"
]
},
{
"exchange": "poison-ex",
"target": "poison-q",
"keys": []
}
]
}

这是 rabbitmq 服务器的日志

root@ALIPL5126:/opt/hos-customer-service# docker logs opt_rabbitmq_1
2018-05-31 07:09:25.438 [warning] <0.26747.0> closing AMQP connection <0.26747.0> (192.168.16.5:45180 -> 192.168.16.2:5672):
missed heartbeats from client, timeout: 30s

根据配置文档及其心跳文章,您有两个选项可以尝试:

  1. 禁用心跳,这是非常不鼓励的(c(,但肯定会起作用。
  2. 增加配置中的默认检测信号时间,例如3600(以秒为单位,等于 1 小时(

最新更新