DAS_2024_1/kuzarin_maxim_lab_4/HelloWorld/Sender.cs

63 lines
2.0 KiB
C#

using RabbitMQ.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Channels;
using System.Threading.Tasks;
namespace HelloWorld
{
public class Sender : IDisposable
{
private readonly ConnectionFactory _connectionFactory;
private readonly IConnection _connection;
private readonly IModel _channel;
private readonly string _queueName;
public Sender(string brockerHost, string brockerUsername, string brockerPassword, string queueName)
{
_queueName = queueName;
_connectionFactory = new ConnectionFactory() { HostName = brockerHost, UserName = brockerUsername, Password = brockerPassword };
_connection = _connectionFactory.CreateConnection();
_channel = _connection.CreateModel();
_channel.QueueDeclare( queue: _queueName,
durable: true,
exclusive: false,
autoDelete: false,
arguments: null);
}
public bool SendMessageToQueue(string messageText)
{
try
{
var messageBody = Encoding.UTF8.GetBytes(messageText);
var properties = _channel.CreateBasicProperties();
properties.Persistent = true;
_channel.BasicPublish(exchange: string.Empty,
routingKey: _queueName,
basicProperties: properties,
body: messageBody);
return true;
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
return false;
}
~Sender() => Dispose();
public void Dispose()
{
_connection.Dispose();
_channel.Dispose();
}
}
}