Я использую официальный клиент кролика для .net .У меня есть 20
очереди в rabbitmq
экземпляре.Если я создаю IModel
для каждого потребителя очереди, как это:
for(int i = 0; i < 20; i++)
{
var model = _connection.CreateModel();
var cns = new EventingBasicConsumer(model);
ch.BasicConsume("queue_" + i, false, cns);
...
}
Приложение использует 37
потоков.
Если я повторно использую один и тот же IModel
для всех потребителей:
var model = _connection.CreateModel();
for(int i = 0; i < 20; i++)
{
var cns = new EventingBasicConsumer(model);
ch.BasicConsume("queue_" + i, false, cns);
...
}
Приложение использует 18
потоков.
Это безопасный и хороший способ уменьшить количество потоков приложений?
Я считаю количество потоков, используя Process.GetCurrentProcess().Threads.Count
.
Я проверил потоки в dottrace
: в 1-м случае есть 20 потоков, созданных RabbitMQ.Client
с именем вроде WorkPool-Session # 1: Соединение (guid-here), amqp: //1.1.1.1:5672, во 2-м случае - только одна такая тема.
ОБНОВЛЕНИЕ : Размещен вопрос в официальной группе Google rabbitmq .