1、启动时报错

  • 问题描述:

使用rabbitmq-server -detached命令启rabbitmq时,提示Warning: PID file not written; -detached was passed

  • 问题原因:

PID文件已经存在或未权限

  • 解决方案:

删除PID文件重启服务,或者给PID所在的目录添加权限

2、执行rabbitmq命令报错

  • 问题描述:

修改Hostname文件后,使用rabbitmq命令,均会报错,提示如下:

  1. Cluster status of node rabbit@web2 ...
  2. Error: unable to connect to node rabbit@web2: nodedown
  3. DIAGNOSTICS
  4. ===========
  5. attempted to contact: [rabbit@web2]
  6. rabbit@web2:
  7. * connected to epmd (port 4369) on web2
  8. * epmd reports node 'rabbit' running on port 25672
  9. * TCP connection succeeded but Erlang distribution failed
  10. * Hostname mismatch: node "rabbit@mq2" believes its host is different. Please ensure that hostnames resolve the same way locally and on "rabbit@mq2"
  • 问题原因:

修改主机名后,rabbitmq依旧使用旧主机名进行状态检查,故检查失败

  • 解决方案:

    • 使用ps -ef |grep rabbitmq查看进程
    • 执行kill -9 [进程ID]
    • 使用rabbitmq-server -detached启动服务

      3、web端无法访问

  • 问题描述:

安装完成后,使用http://ip:15672发现web端无法打开

  • 问题原因:

rabbitmq的web端并非默认启用,为Rabbitmq一个模块,因此需要单独启用

  • 解决方案:

    1. rabbitmq-plugins enable rabbitmq_management

    4、客户端连接失败

    4.1、IP地址错误

  • 问题描述:

应用服务器内网连接RabbitMQ报错,报错信息如下:

  1. Exception in thread "main" java.net.NoRouteToHostException: No route to host (Host unreachable)
  2. at java.net.PlainSocketImpl.socketConnect(Native Method)
  3. at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
  4. at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
  • 问题原因:

RabbitMQ IP地址错误导致连接失败

  • 解决方案:

确认RabbitMQ服务器IP,并使用telnet测试连通性

4.2、rabbitmq端口错误

  • 问题描述:

应用服务器内网连接RabbitMQ报错,报错信息如下:

  1. Exception in thread "main" java.net.ConnectException: Connection refused (Connection refused)
  2. at java.net.PlainSocketImpl.socketConnect(Native Method)
  3. at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
  4. at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
  • 问题原因:

RabbitMQ 端口地址错误导致连接失败

  • 解决方案:

确认RabbitMQ服务器IP和端口,并使用telnet测试连通性

4.3、验证信息错误

  • 问题描述:

应用服务器内网连接RabbitMQ报错,报错信息如下:

  1. Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details
  2. see the broker logfile.
  3. at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:351)
  4. at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:64)
  • 问题原因:

RabbitMQ 用户名密码错误导致连接失败

  • 解决方案:

确认RabbitMQ服务器用户名密码,并使用java -cp .:rabbitmq-tutorial.jar Send IP 5672 user *测试连通性

5、RabbitMQ脑裂问题

  • 问题描述:

RabbitMQ使用中异常,报错信息如下:

Network partition detected

Mnesia reports that this RabbitMQ cluster has experienced a network partition. There is a risk of losing data. Please read RabbitMQ documentation about network partitions and the possible solutions.
  • 问题原因:

因网络中断或其他原因导致连接断开,导致RabbitMQ连接异常

  • 解决方案:

修改配置文件

6、授权失败

  • 问题描述:

应用使用RabbitMQ过程中报错,报错信息如下:

Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException
connection reset
  • 问题原因:

rabbitmq默认仅有guest用户,且此用户对于队列没有管理权限

  • 解决方案:

在rabbitmq web控制台添加新用户,并赋予管理队列的权限。

7、安装错误

7.1、案例一

  • 问题描述:

在Centos7中安装erlang报错依赖检测失败

  • 问题原因:

erlang存在系统环境依赖,需要先安装依赖环境

  • 解决方案:

    yum install epel-release
    yum install unixODBC unixODBC-devel wxBase wxGTK SDL wxGTK-gl
    

    7.2、案例二

  • 问题描述:

在Centos7中安装erlang报错依赖检测失败,报错erlang >= 19.3 被 rabbitmq-server-3.7.8-1.el7.noarch

  • 问题原因:

需要erlang版本>=19.3,然而默认yum仓库中的版本较低,通过以下途径解决

  • 解决方案:
    vim /etc/yum.repos.d/rabbitmq-erlang.repo
    [rabbitmq-erlang]
    name=rabbitmq-erlang
    baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7
    gpgcheck=1
    gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
    repo_gpgcheck=0
    enabled=1