RabbitMq как ограничить количество обработки очереди в день?
Только начал изучать RabbitMq, и мне нужно, ограничить количество выполнений в день до 200 как это можно сделать?
У меня есть определённое событие, которые вызывается при обработке очереди, мне нужно если кол-во обработанных сообщений уже больше 200 за день, то не вызвать это событие пока не наступит другой день.
public class RabbitMqConsumer : IRabbitMqConsumer
{
private readonly IConnection _connection;
private readonly IModel _channel;
private readonly string _queueName;
public RabbitMqConsumer(string uri, string queueName)
{
if (string.IsNullOrWhiteSpace(uri))
throw new ArgumentNullException(nameof(uri));
if (string.IsNullOrWhiteSpace(queueName))
throw new ArgumentNullException(nameof(queueName));
_queueName = queueName;
IConnectionFactory connectionFactory = new ConnectionFactory
{
Uri = new Uri(uri)
};
_connection = connectionFactory.CreateConnection();
_channel = _connection.CreateModel();
_channel.QueueDeclare(_queueName, exclusive: false, autoDelete: false);
}
public event ProducerEventHandler? Producer;
public void Start()
{
var consumer = new EventingBasicConsumer(_channel);
consumer.Received += (sender, args) =>
{
var json = Encoding.UTF8.GetString(args.Body.ToArray());
var request = JsonConvert.DeserializeObject<IndexApiRequest>(json);
Console.WriteLine(request.Url);
Producer?.Invoke(request);
};
_channel.BasicConsume(_queueName, true, consumer);
}
public void Dispose()
{
_channel.Dispose();
_connection.Dispose();
_channel.Close();
_connection.Close();
}
}