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)
您是否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
| 归档时间: |
|
| 查看次数: |
19732 次 |
| 最近记录: |