Я решил проблему, используя следующую функцию, с EasyNetQ:
public static int GetMessageCount(string queueName)
{
IQueue queue;
IBus bus = getBusFromName(queueName);
if (queues.TryGetValue(queueName, out queue))
return (int)bus.Advanced.MessageCount(queue);
return 0;
}
getBusFromName()
это функция, которая извлекает экземпляр IBus
очереди из словаря, в котором я храню все очереди, используемые программным обеспечением.