1C_DataBus/1CDataBus/RabbitMQ/RabbitConnection.cs

51 lines
1.6 KiB
C#

using RabbitMQ.Client;
using System.Text;
namespace _1CDataBus.RabbitMQ
{
public class RabbitConnection : IDisposable
{
private readonly IConnection _connection;
private readonly IChannel _channel;
private IConfiguration _configuration;
private string _queueName;
public RabbitConnection(IConfiguration configuration)
{
_configuration = configuration;
var section = _configuration.GetSection("RabbitMqSettings");
var factory = new ConnectionFactory
{
HostName = section.GetValue<string>("HostName"),
UserName = section.GetValue<string>("UserName"),
Password = section.GetValue<string>("Password"),
VirtualHost = section.GetValue<string>("VirtualHost")
};
#if DEBUG
_queueName = section.GetValue<string>("TestQueueName");
#else
_queueName = section.GetValue<string>("QueueName");
#endif
_connection = factory.CreateConnectionAsync().Result;
_channel = _connection.CreateChannelAsync().Result;
}
public async Task SendMessage(string body)
{
await _channel.QueueDeclareAsync(
queue: _queueName,
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
var encoded = Encoding.UTF8.GetBytes(body);
await _channel.BasicPublishAsync(string.Empty, _queueName, encoded);
}
public void Dispose()
{
_channel.Dispose();
_connection.Dispose();
}
}
}