rabbitmq链接超时_一次奇怪的RabbitMQ超时异常

当将rabbitmq服务器的IP更改为与开发机器不同网段后,出现连接超时的问题。经过排查,发现是由于不同网段间的地址解析耗时过长导致。解决方案包括:在rabbitmq服务器的host文件中添加自身IP和hostname映射,以及在开发机器上通过增加IP实现跨网段通讯。通过设置连接和握手超时参数,最终解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事情起源于一次本地安装和配置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

95c5769f886d0ea1de45e111e875704a.png

cmd >> telnet 192.168.13.21 5672

b02538bd211f8db273e5ba84f3ca7277.png

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

eab680847819551c3da52c0f35b80d18.png

启动程序报错,如下:

5c01b0b9f44339382d586d7ef641b043.png

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

f5f32cd4453c2ed573a8c182594dfede.png

连接和执行成功,如下:

371b15c3490795c24320dd2c7e0439e0.png

4.解决办法:

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

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

55b6582311078cd08ebc2c27cb892072.png

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

root >> vi /etc/host

# 增加如下参数

de4f35b0450f749ba8e856d16c58e261.png

然后,重启一下rabbitmq

root >> systemctl restart rabbitmq-server

739cac5a1604df1be5fa40c8c2d0336f.png

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

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

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

09709d41689aec55efb018cffa8170be.png

希望与广大网友互动??

点此进行留言吧!

### 回答1: rabbitmq_delayed_message_exchange-20171201-3.7.x.zip是RabbitMQ的一个插件包。RabbitMQ是一个开源的消息队列中间件,用于实现异步通信和解耦应用程序之间的消息传递。 这个插件包是针对RabbitMQ版本3.7.x的,目的是提供延迟消息交换的功能。延迟消息交换是指消息可以在一定的时间延迟后再被投递到消费者,这对于某些需要延迟处理的业务场景非常有用。 使用这个插件包,可以通过声明一个类型为"x-delayed-message"的交换机,来实现延迟消息交换。在发送消息时,可以通过设置消息的headers来指定延迟的时间,RabbitMQ会根据这个时间将消息存储在内部的延迟队列中。一旦到达延迟时间,消息将从延迟队列中被取出并且发送到相应的消费者队列中。 这个插件包的安装和配置相对简单,只需要将插件包放置在RabbitMQ的插件目录中,并在RabbitMQ的配置文件中启用该插件即可。安装完毕后,就可以在RabbitMQ中使用延迟消息交换功能。 总之,rabbitmq_delayed_message_exchange-20171201-3.7.x.zip是RabbitMQ的一个插件包,用于实现延迟消息交换功能,非常适用于一些需要延迟处理的业务场景。使用这个插件包可以方便地在RabbitMQ中实现延迟消息交换。 ### 回答2: rabbitmq_delayed_message_exchange-20171201-3.7.x.zip 是RabbitMQ插件的一个压缩包。 RabbitMQ是一种开源的消息队列中间件,它实现了高度可靠的消息传递机制,用于在分布式系统中传递和处理消息。RabbitMQ提供了一种将应用程序的不同部分连接起来的方式,允许它们之间进行可靠的通信。 而rabbitmq_delayed_message_exchange插件是RabbitMQ的一个延迟消息交换机的插件。它允许开发人员在RabbitMQ中发送具有延迟的消息。延迟消息是指在指定的延迟时间后才能被消费者接收到的消息。通过延迟消息交换机,可以实现一些需要延迟处理的场景,如订单超时提醒、定时任务等。 这个压缩包的命名格式为rabbitmq_delayed_message_exchange-20171201-3.7.x.zip。其中,20171201表示该插件的发布日期为2017年12月01日,3.7.x代表该插件适用于RabbitMQ 3.7.x版本。 使用该插件,你需要下载这个压缩包,然后解压缩。解压后会得到一个插件文件,将该文件放置到RabbitMQ的插件目录中。之后,你需要启动或重启RabbitMQ服务,使插件生效。 通过安装rabbitmq_delayed_message_exchange插件,你可以在RabbitMQ中实现消息的延迟发送和处理。这对于需要进行一些延迟操作的应用场景非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值