zoukankan      html  css  js  c++  java
  • 一次奇怪的RabbitMQ超时异常

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

    cmd >> telnet 192.168.13.21 5672

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

    启动程序报错,如下:

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

     连接和执行成功,如下:

    4.解决办法:

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

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

    step 1: 修改RabbitMQ服务器的host文件,告诉RabbbitMQ服务器,他自己的IP和HOSTNAME

    root >> vi /etc/host

    # 增加如下参数

    然后,重启一下RabbitMQ

    root >> systemctl restart rabbitmq-server

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

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

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

  • 相关阅读:
    iOS开发学习树
    iOS开发数据库篇—FMDB数据库队列
    iOS开发数据库篇—FMDB简单介绍
    iOS开发数据库篇—SQLite常用的函数
    iOS开发数据库篇—SQLite模糊查询
    iOS开发数据库篇—SQLite的应用
    iOS开发数据库篇—SQL代码应用示例
    iOS开发数据库篇—SQL使用方法
    iOS开发数据库篇—SQLite简单介绍
    C#-汉字转拼音缩写
  • 原文地址:https://www.cnblogs.com/itshare/p/12825362.html
Copyright © 2011-2022 走看看