mirror of
https://github.com/alex289/CleanArchitecture.git
synced 2025-06-29 18:21:08 +00:00
38 lines
1.0 KiB
C#
38 lines
1.0 KiB
C#
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Newtonsoft.Json;
|
|
using RabbitMQ.Client;
|
|
|
|
namespace CleanArchitecture.Domain.Rabbitmq.Actions;
|
|
|
|
public sealed class SendMessage : IRabbitMqAction
|
|
{
|
|
private static readonly JsonSerializerSettings s_serializerSettings =
|
|
new() { TypeNameHandling = TypeNameHandling.Objects };
|
|
|
|
private readonly string _exchange;
|
|
private readonly object _message;
|
|
|
|
private readonly string _routingKey;
|
|
|
|
|
|
/// <param name="routingKey">If exchange is empty, this is the name of the queue</param>
|
|
public SendMessage(string routingKey, string exchange, object message)
|
|
{
|
|
_routingKey = routingKey;
|
|
_exchange = exchange;
|
|
_message = message;
|
|
}
|
|
|
|
public async Task Perform(IChannel channel)
|
|
{
|
|
var json = JsonConvert.SerializeObject(_message, s_serializerSettings);
|
|
|
|
var content = Encoding.UTF8.GetBytes(json);
|
|
|
|
await channel.BasicPublishAsync(
|
|
_exchange,
|
|
_routingKey,
|
|
content);
|
|
}
|
|
} |