Files
probearbeit/api/RabbitMQ/RabbitMQProducer.cs
T
2026-08-31 15:27:07 +02:00

32 lines
985 B
C#

using api.DTOs;
using RabbitMQ.Client;
using System.Text;
using System.Text.Json;
namespace api.RabbitMQ;
public class RabbitMQProducer : IMessageProducer
{
private IChannel? channel;
private readonly string personQueueName = "persons";
public async void SendMessage<T>(T message)
{
if (channel == null)
{
ConnectionFactory factory = new ConnectionFactory
{
Uri = new Uri("amqp://guest:guest@localhost:5672")
};
IConnection conn = await factory.CreateConnectionAsync();
channel = await conn.CreateChannelAsync();
await channel.QueueDeclareAsync(personQueueName);
}
if (message is PersonDto)
{
string jsonString = JsonSerializer.Serialize(message);
byte[] body = Encoding.UTF8.GetBytes(jsonString);
_ = channel.BasicPublishAsync(exchange: "", routingKey: personQueueName, body: body);
}
}
}