# RabbitMQ客户端连接报错原因分析
RabbitMQ客户端连接失败，可能原因包括地址填错、端口填错、用户名或者密码填错、超过最大连接数、未创建Vhost或者填错Vhost名称。
#### 可能原因一：连接地址不正确
VPC内访问场景下，连接地址不正确时，报错如下：
```
[root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.125.110 5672 user *******
Exception in thread "main" java.net.NoRouteToHostException: No route to host (Host unreachable)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
```
公网访问场景下，连接地址不正确时，报错如下：
```
[root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 139.xxx.178 5672 user *******
Exception in thread "main" java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
```
**解决方法：**在RabbitMQ控制台的"概览"页面，获取"内网连接地址"/"公网连接地址"，修改连接实例代码中的连接地址。
#### 可能原因二：端口不正确
VPC内访问场景下，端口不正确时，报错如下：
```
[root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.125.111 5673 user *******
Exception in thread "main" java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
```
公网访问场景下，端口不正确时，报错如下：
```
[root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 139.xxx.179 5673 user *******
Exception in thread "main" java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
```
**解决方法：**修改端口号。
#### 可能原因三：用户名或密码错误
报错如下：
```
[root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.125.111 5672 user *******
Exception in thread "main" com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details
 see the broker logfile.
at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:351)
at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:64)
```
**解决方法：** 修改用户名或密码。如果忘记密码，参考[重置实例密码](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq-ug-180619001.html)，重置密码。
#### 可能原因四：超过最大连接数
报错如下：
![](https://support.huaweicloud.com/rabbitmq_faq/zh-cn_image_0000001580776780.png "点击放大")
**解决方法：**减少连接数，关闭不使用的连接。
#### 可能原因五：未创建Vhost或者填错Vhost名称
报错如下：
```
Couldn't log in: server connection error 530, message: NOT_ALLOWED - vhost /localdev/ not found
```
**解决方法：**
- 如果未创建Vhost，进入RabbitMQ控制台的"实例管理 \> Vhost列表"页面，创建Vhost。
- 如果是Vhost名称填错了，请参考RabbitMQ控制台的"实例管理 \> Vhost列表"页面显示的Vhost名称，修改连接URL和配置文件。
 
