Я пытаюсь настроить подписку на очередь RabbitMQ и передать ей специальный обработчик событий.
Итак, у меня есть класс с именем RabbitMQClient
, который содержит следующий метод:
public void Subscribe(string queueName, EventHandler<BasicDeliverEventArgs> receivedHandler)
{
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(
queue: queueName,
durable: false,
exclusive: false,
autoDelete: false,
arguments: null
);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += receivedHandler;
channel.BasicConsume(
queue: queueName,
autoAck: false,
consumer: consumer
);
}
}
}
Я использую внедрение зависимостей, поэтому у меня есть RabbitMQClient
(singleton) интерфейс для него.
В моем классе потребления у меня есть этот метод, который я хочу использовать как EventHandler
public void Consumer_Received(object sender, BasicDeliverEventArgs e)
{
var message = e.Body.FromByteArray<ProgressQueueMessage>();
}
И я пытаюсь подписаться на очередь следующим образом:
rabbitMQClient.Subscribe(Consts.RabbitMQ.ProgressQueue, Consumer_Received);
Я вижу, что очередь начинает получать сообщения, но метод Consumer_Received
не запускается.
Что мне здесь не хватает?