using Microsoft.Extensions.Logging; using RabbitMQ.Client; using System.Text; namespace QYZH.InteractiveMagazine.Infrastructure.MessageQueue; /// /// RabbitMQ消息发布器 /// public class RabbitMQPublisher { private readonly IConnection _connection; private readonly ILogger _logger; /// /// 构造函数 /// /// RabbitMQ连接 /// 日志记录器 public RabbitMQPublisher(IConnection connection, ILogger logger) { _connection = connection; _logger = logger; } /// /// 发布消息 /// /// 交换机名称 /// 路由键 /// 消息内容 public async Task PublishMessage(string exchange, string routingKey, string message) { await using var channel = await _connection.CreateChannelAsync(); var body = Encoding.UTF8.GetBytes(message); await channel.BasicPublishAsync( exchange: exchange, routingKey: routingKey, body: body ); _logger.LogInformation("消息已发布 | 交换机: {Exchange} | 路由键: {RoutingKey} | 消息: {Message}", exchange, routingKey, message); } }