我正在准备一个简单的ASP.NET Core应用程序。
我已经在笔记本电脑上安装了RabbitMQ服务器。RabbitMQ管理UI运行在localhost:15672
上。
兔子MQ集群名类似于:rabbit@CR00001.ABC.COM.LOCAL
我正试图在控制器中向兔子发送信息。但是我得到的是,没有一个指定的端点是可到达的错误。
如果我使用'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
}
}
以下是兔子MQ管理UI中的测试用户配置
发布于 2020-09-28 07:14:22
您是否在UI门户中设置了test
用户?这可能是连接拒绝错误的原因。您可以通过http://localhost:15672/#/users设置用户。
您还应该调试您的factory
以检查您的配置值是否被正确传递。
我还建议您在捕获中弹出一些代码,以确保不会丢失异常。
对http://rabbit
的引用用于容器中。只有当您在容器化网络中运行ASPNET和兔子应用程序(例如,Docker )时,这些程序才能工作。我发现使用容器是学习RabbitMq的更好的方法。
如果你不熟悉集装箱化,我建议你看一下沃尔夫冈奥夫纳https://www.programmingwithwolfgang.com/rabbitmq-in-an-asp-net-core-3-1-microservice/的这篇文章(以及相关系列),以及YouTube https://www.youtube.com/watch?v=Kyx2PsuwomE上布拉德特拉弗西的“码头入门”。
发布于 2021-12-28 12:59:31
创建用户后,不要忘记设置权限、基本权限、
变量工厂=新ConnectionFactory() { HostName = "hostname_or_ip_adres_here",UserName=“用户名在这里..”,Password="psw here.“};
这会成功的!
https://stackoverflow.com/questions/64096600
复制相似问题