51 lines
1.6 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|