Каналы продолжают увеличиваться для каждого exchange.publish() в RabbitMQ с библиотекой node-amqp

Я использую библиотеку node-amqp для своего проекта nodejs. Я также разместил проблему на странице проекта github.

Он продолжает создавать новые каналы, и они остаются бездействующими навсегда. Через час каналов было ~12000. Я проверил варианты обмена и публикации, но пока я даже не близок к решению.

Что не так с кодом и/или есть ли какие-либо параметры/настройки для сервера rabbitmq для этой проблемы?

Вот пример кода:

connection.exchange("brcks-wfa",{type:'direct',durable:true}, function(exchange) {   
setInterval(function() {
        ...
        awS.forEach(function(wc){
                    ...
                    nstbs.forEach(function(br){
                        ...
                        BUpdate(brnewinfo,function(st){
                            if(st){
                                exchange.publish(route, brnewinfo,{contentType:"application/json"});
                            }
                        });
                    });
                    ...
        });
}, 4000);
});

person hayzem    schedule 05.03.2015    source источник
comment
Приведенный выше код вызывается в вашем проекте только один раз? Или это может быть вызвано более одного раза?   -  person lsowen    schedule 08.03.2015
comment
Это дочерний процесс другого родительского скрипта. Поэтому, когда событие триггера приходит через RabbitMQ, этот родительский скрипт перезапускает этот дочерний процесс. И когда этот дочерний процесс завершается, он закрывает соединения. Я могу обновить вопрос с помощью этого родительского скрипта, если это необходимо.   -  person hayzem    schedule 08.03.2015
comment
В приведенном выше фрагменте кода все выглядит правильно. У меня есть два дополнительных вопроса: (1) Какую версию node-amqp вы используете? (2) Не могли бы вы опубликовать код, отвечающий за закрытие соединений?   -  person lsowen    schedule 09.03.2015
comment
Обратите внимание, что мы, команда RabbitMQ, не рекомендуем эту библиотеку. Если возможно, используйте вместо этого: github.com/squaremo/amqp.node.   -  person old_sound    schedule 10.03.2015


Ответы (1)


В node-amqp есть ошибка, из-за которой каналы не закрываются. Команда Rabbit MQ больше не рекомендует использовать эту библиотеку, вместо этого они рекомендуют ampq.node, который немного более низкоуровневый и позволяет/требует от вас обрабатывать каналы вручную.

person Anders Bornholm    schedule 13.04.2015