RabbitMQ 连接被拒绝 127.0.0.1:5672

hal*_*ver 6 asp.net rabbitmq .net-core

我正在准备一个简单的 ASP.NET Core MVC Web 应用程序。

我已经在我的笔记本电脑上安装了 RabbitMQ 服务器。RabbitMQ 管理 UI 正在运行localhost:15672

Rabbit MQ 集群名称如下:rabbit@CR00001.ABC.COM.LOCAL

我正在尝试向控制器中的rabbitmq 发送消息。但我收到None of the specified endpoints werereachable错误。

如果我使用“localhost”作为主机名,则会在内部异常中收到“连接被拒绝 127.0.0.1:5672” 。

如果我用作rabbit主机名,我会得到“名称或服务未知”

我尝试根据其他 StackOverflow 问题解决该问题,但是没有一个能解决我的问题。

家庭控制器:

        [HttpPost]
        public void SendMessage([FromBody]Message message)
        {
            try
            {
                var factory = new ConnectionFactory()
                {
                    UserName = _username,
                    Password = _password,
                    HostName = _hostname,
                    VirtualHost = "/",
                    Port = _port,
                };
                using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: _queueName,
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

                    var body = Encoding.UTF8.GetBytes(message.Text);

                    channel.BasicPublish(exchange: "",
                                         routingKey: _queueName,
                                         basicProperties: null,
                                         body: body);
                }

            }
            catch (Exception ex)
            {

            }
        }
Run Code Online (Sandbox Code Playgroud)

应用程序设置.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "RabbitMq": {
    "Hostname": "localhost",
    "QueueName": "WordQueue",
    "UserName": "test",
    "Password": "test",
    "Port": 5672
  }
}
Run Code Online (Sandbox Code Playgroud)

这是 Rabbit MQ 管理 UI 中的测试用户配置 测试用户配置

Mar*_*per 2

您是否test在 UI 门户中设置了用户?这可能是您的连接被拒绝错误的原因。您可以通过 http://localhost:15672/#/users 设置用户。

您还应该调试您的factory配置值以检查是否正确传递

我还建议您在 catch 中弹出一些代码,以确保您不会错过异常

对 的引用http://rabbit适用于容器内。仅当您在容器化网络(例如 Docker Compose)中运行 ASPNET 和 Rabbit 应用程序时,这些才有效。我发现使用容器是学习 RabbitMq 的更好方法。

感谢您现在有点偏离主题,但如果您不熟悉容器化,我建议您看一下 Wolfgang Ofner 的这篇文章(以及相应的系列)https://www.programmingwithwolfgang.com/rabbitmq- in-an-asp-net-core-3-1-microservice/以及 YouTube 上 Brad Traversy 的 Docker 入门https://www.youtube.com/watch?v=Kyx2PsuwomE