博客
关于我
RabbitMQ连接报错(1)—— None of the specified endpoints were reachable
阅读量:794 次
发布时间:2023-03-01

本文共 1262 字,大约阅读时间需要 4 分钟。

RabbitMQ 连接异常解决指南

在使用 RabbitMQ 进行消息中继时,可能会遇到创建连接时抛出异常的问题。这种异常通常是由于 ConnectionFactory 参数配置不正确导致的,具体表现为:

异常类型:CreateConnection()

常见原因:

  • HostName、UserName、Password 设置错误

    ConnectionFactory 中的 HostName、UserName 和 Password 需要与 RabbitMQ 服务器的实际配置一致。例如:

    factory.UserName = "QueueSetting.UserName"; // 用户名
    factory.Password = "QueueSetting.Password"; // 密码
    factory.HostName = "RabbitMQ服务器IP"; // RabbitMQ 服务 IP,例如:192.168.1.1

    注意:默认端口为 5672,请确认防火墙未阻止该端口。

  • 端口配置错误

    如果 RabbitMQ 服务运行在非默认端口(如 5672),需要在 ConnectionFactory 中明确指定。例如:

    factory.Port = AmqpTcpEndpoint.UseDefaultPort; // 使用默认端口 5672

    或者:

    factory.Port = 5673; // 自定义端口
  • 虚拟主机权限问题

    虚拟主机(Vhost)需要预先在 RabbitMQ 管理界面中为用户分配权限。操作步骤如下:

    • 访问 RabbitMQ 管理网站(http://RabbitMQ-IP:15672)。
    • 登录管理员账号(用户名和密码)。
    • 进入“Admin”界面,查看或设置 Vhost 权限。
  • 解决方法:

  • 检查防火墙设置

    部署生产环境后,确保防火墙未阻止 RabbitMQ 的默认端口(5672)。可以通过以下命令检查端口状态:

    sudo ufw allow out 5672
  • 确保用户名和密码配置正确

    验证 ConnectionFactory 中的 UserName 和 Password 是否与 RabbitMQ 服务器上的用户信息一致。

  • 设置虚拟主机权限

    如果使用了自定义的 Vhost,请确保在 RabbitMQ 管理界面中为相关用户授予相应权限。例如:

    • 点击“Admin”进入管理界面。
    • 选择“用户”或“Vhost”选项,添加所需权限。
  • 注意事项:

    • 默认 Vhost:如果未指定 Vhost,默认使用 "/"。
    • 协议配置:请确保使用正确的协议配置,例如:
      factory.Protocol = Protocols.DefaultProtocol; // 使用 AMQP 协议

    通过以上方法,可以有效解决 "None of the specified endpoints were reachable" 异常。如仍有问题,请检查网络连接、防火墙设置以及 RabbitMQ 服务器的状态是否正常。

    转载地址:http://xstfk.baihongyu.com/

    你可能感兴趣的文章