欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一次奇怪的RabbitMQ超时异常

程序员文章站 2022-07-09 18:58:53
事情起源于一次本地安装和配置RabbitMQ,代码之前是OK的,只是把RabbitMQ服务器的IP网段调整到和开发机器不同的网段后(备注,有设置两者互通,并且防火墙也是通的); 但是当做完RabbitMQ服务器的网段后,开发机器的代码就访问RabbitMQ,就报错connection error o ......

事情起源于一次本地安装和配置rabbitmq,代码之前是ok的,只是把rabbitmq服务器的ip网段调整到和开发机器不同的网段后(备注,有设置两者互通,并且防火墙也是通的);

但是当做完rabbitmq服务器的网段后,开发机器的代码就访问rabbitmq,就报错connection error or timeout。

 

1. 环境介绍

rabbitmq 服务器:192.168.13.21

开发机器:192.168.3.6

两者网络是联通的,并且rabbitmq服务器的防火墙是允许客户端ip访问端口5672( amqp)和15672(http web)

cmd >> ping 192.168.13.21

一次奇怪的RabbitMQ超时异常

 

 

cmd >> telnet 192.168.13.21 5672

一次奇怪的RabbitMQ超时异常

 

 

 

2. old 代码,原有的timeout,分别设置如下

一次奇怪的RabbitMQ超时异常

启动程序报错,如下:

一次奇怪的RabbitMQ超时异常

 

 

 

3. new 代码,修改的timeout,分别设置如下:同时必须增加sethandshaketimeout参数

一次奇怪的RabbitMQ超时异常

 

 

 连接和执行成功,如下:

一次奇怪的RabbitMQ超时异常

 

 

 

4.解决办法:

最后,发现根本原因,可能是本地开发机器和rabbitmq服务器之间,不同网段的地址或ip解析产生过多耗时。

原因:本地开发机器的网卡设置,我是通过增加一个ip="192.168.13.6",来实现本地开发机器和“rabbitmq服务器”之间不同网段的互相通讯。

一次奇怪的RabbitMQ超时异常

 

 

 

 

step 1: 修改rabbitmq服务器的host文件,告诉rabbbitmq服务器,他自己的ip和hostname

root >> vi /etc/host

# 增加如下参数

一次奇怪的RabbitMQ超时异常

 

 

 

然后,重启一下rabbitmq

root >> systemctl restart rabbitmq-server

一次奇怪的RabbitMQ超时异常

 

 

 

step 2: 重新在开发机器上,测试之前的old代码

# 测试之前的old代码,timeout设置还是60ms,没有添加参数sethandshaketimeout。

# 但是,这次连接和发送rabbitmq成功

一次奇怪的RabbitMQ超时异常