using JiShe.CollectBus.Common.Extensions.DependencyInjections; using MassTransit; using Microsoft.Extensions.Configuration; namespace JiShe.CollectBus.RabbitMQ.Senders { public class MqSender : IMqSender { private readonly ISendEndpointProvider _sendEndpointProvider; private readonly IConfiguration _configuration; public MqSender(ISendEndpointProvider sendEndpointProvider, IConfiguration configuration) { _sendEndpointProvider = sendEndpointProvider; _configuration = configuration; } public async Task SendToPushAsync(T message, CancellationToken cancellationToken = default) where T : class { var queueName = _configuration["MQ:Queue:Push"]; await SendAsync(queueName, message, cancellationToken); } public async Task SendToPushAsync(object message, CancellationToken cancellationToken = default) { var queueName = _configuration["MQ:Queue:Push"]; await SendAsync(queueName, message, cancellationToken); } public async Task SendToReportAsync(T message, CancellationToken cancellationToken = default) where T : class { var queueName = _configuration["MQ:Queue:Report"]; await SendAsync(queueName, message, cancellationToken); } public async Task SendToReportAsync(object message, CancellationToken cancellationToken = default) { var queueName = _configuration["MQ:Queue:Report"]; await SendAsync(queueName, message, cancellationToken); } public async Task SendAsync(string queueKey,object message, CancellationToken cancellationToken = default) { var endpoint = await _sendEndpointProvider.GetSendEndpoint(new Uri($"queue:{queueKey}")); await endpoint.Send(message, cancellationToken); } } }