RabbitMQ连接被拒绝127.0.0.1:5672

时间:2020-09-28 05:50:38

标签: asp.net .net-core rabbitmq

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

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

兔子MQ集群名称类似于:rabbit@CR00001.ABC.COM.LOCAL

我正在尝试向控制器中的Rabbitmq发送消息。但是我收到所有指定端点均无法访问错误。

如果我使用“ 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)
            {

            }
        }

appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "RabbitMq": {
    "Hostname": "localhost",
    "QueueName": "WordQueue",
    "UserName": "test",
    "Password": "test",
    "Port": 5672
  }
}

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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