记一次.NET6连接ubuntu下RabbitMQ的报错

在尝试使用.NET6实现基于RabbitMQ的集成事件时遇到了跨平台连接问题。最初,虽然可以从Windows本地浏览器访问RabbitMQ的管理界面,但代码无法连接。通过调整端口设置为AmqpTcpEndpoint.UseDefaultPort或直接使用5762端口,成功解决了连接问题。
摘要由CSDN通过智能技术生成

最近在玩.NET6落地DDD,用RabbitMQ做集成事件。开发环境是windows,但是RabbitMQ是在ubuntu下;

刚开始的代码:

我本地的浏览器可以打开RabbitMQ的客户端,我相信Ip,端口,权限什么的都没问题。于是上网去搜。

最后解决是Port改成:Port = AmqpTcpEndpoint.UseDefaultPort,

解决

localhost:15672是RabbitMQ的客户端端口,连接端口是5762,使用5762也可解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 RabbitMQ 帮助类的封装示例,使用 .NET 6: ```csharp using System; using System.Text; using RabbitMQ.Client; namespace RabbitMQHelper { public class RabbitMQHelper { private readonly string _hostName; private readonly int _port; private readonly string _userName; private readonly string _password; private readonly string _queueName; private readonly string _exchangeName; private readonly string _routingKey; private IConnection _connection; private IModel _channel; public RabbitMQHelper(string hostName, int port, string userName, string password, string queueName, string exchangeName, string routingKey) { _hostName = hostName; _port = port; _userName = userName; _password = password; _queueName = queueName; _exchangeName = exchangeName; _routingKey = routingKey; CreateConnection(); } private void CreateConnection() { var factory = new ConnectionFactory { HostName = _hostName, Port = _port, UserName = _userName, Password = _password }; _connection = factory.CreateConnection(); _channel = _connection.CreateModel(); _channel.ExchangeDeclare(_exchangeName, ExchangeType.Direct, durable: true); _channel.QueueDeclare(_queueName, durable: true, exclusive: false, autoDelete: false); _channel.QueueBind(_queueName, _exchangeName, _routingKey); } public void PublishMessage(string message) { var body = Encoding.UTF8.GetBytes(message); var properties = _channel.CreateBasicProperties(); properties.Persistent = true; _channel.BasicPublish(_exchangeName, _routingKey, properties, body); } public string ConsumeMessage() { var message = string.Empty; var consumer = new EventingBasicConsumer(_channel); consumer.Received += (model, ea) => { var body = ea.Body.ToArray(); message = Encoding.UTF8.GetString(body); }; _channel.BasicConsume(_queueName, true, consumer); return message; } public void CloseConnection() { _channel.Close(); _connection.Close(); } } } ``` 这个类有一个构造函数,需要传入 RabbitMQ 服务器的主机名、端口、用户名、密码、队列名、交换机名和路由键。然后,它会创建一个连接和一个通道,并使用这些参数声明交换机和队列,并将它们绑定在一起。`PublishMessage`方法可以用于发布消息,`ConsumeMessage`方法可以用于消费消息。最后,可以使用`CloseConnection`方法关闭连接。 使用示例: ```csharp using RabbitMQHelper; var rabbitMQHelper = new RabbitMQHelper("localhost", 5672, "guest", "guest", "my_queue", "my_exchange", "my_routing_key"); rabbitMQHelper.PublishMessage("Hello, RabbitMQ!"); var message = rabbitMQHelper.ConsumeMessage(); Console.WriteLine(message); rabbitMQHelper.CloseConnection(); ``` 这是一个简单的示例,你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值