Spring AMQP - издатель подтверждает, что не закрывает неиспользуемые каналы

Публикация и получение acks/nacks работает как положено. Меня беспокоит то, что он не закрывает дополнительные каналы, которые не используются. С другой стороны, если для параметра Publisher Confirms установлено значение false, неиспользуемые каналы закрываются, как и ожидалось.

Образец ConnectionFactory:

cachingConnectionFactory.setCacheMode(CachingConnectionFactory.CacheMode.CHANNEL);                                       
cachingConnectionFactory.setChannelCacheSize(confirmChannelCacheSize);                                      
cachingConnectionFactory.setPublisherConfirms(Boolean.TRUE);
cachingConnectionFactory.setPublisherReturns(Boolean.TRUE);

Пример шаблона RabbitTemplate:

template.setMandatory(true);
template.setConfirmCallback(deepConfirmCallback);
template.setReturnCallback(returnCallback);

Зависимость Spring AMQP:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>

person Sravya    schedule 07.05.2020    source источник
comment
Загрузка 2.1.1. почти 18 месяцев; текущая версия 2.1.x — 2.1.14. Если вы все еще видите проблему с этим комментарием здесь. Имейте в виду, что закрытие канала откладывается до тех пор, пока не будет получено подтверждение. Он будет принудительно закрыт через 5 секунд, если не будет получено подтверждение. Не задавайте один и тот же вопрос в нескольких местах; это пустая трата вашего и нашего времени; Я закрыл проблему GitHub; его можно открыть повторно, если это окажется ошибкой. Кроме того, какое значение имеет confirmChannelCacheSize?   -  person Gary Russell    schedule 08.05.2020
comment
@ Гэри Рассел. Канал никогда не закрывается даже через несколько часов. Я установил значение confirmChannelCacheSize равным 5, чтобы проверить этот сценарий.   -  person Sravya    schedule 08.05.2020
comment
В этом весь смысл кеша; мы оставляем 5 каналов доступными для повторного использования. Только 6-й и последующие каналы будут физически закрыты. Очередной раз; попробуйте последнюю версию; если вы видите 6 или более используемых каналов, я согласен, что есть проблема. Я уже закончил на сегодня, поэтому я не могу проверить это до завтра.   -  person Gary Russell    schedule 08.05.2020
comment
@GaryRussell Просто во избежание путаницы - проблема, которую я поднял, заключается в том, что если размер кеша канала равен 5 , то 6 и более поздние каналы не закрываются, пока мы не прервем это соединение. Я пробовал с версией 2.1.14, и я все еще вижу то же самое.   -  person Sravya    schedule 08.05.2020
comment
В порядке. Я проверю это завтра.   -  person Gary Russell    schedule 08.05.2020


Ответы (1)


Воспроизведенный; расследование.....

Я открыл задачу на GitHub, если вы хотите следить за ней.

person Gary Russell    schedule 08.05.2020
comment
Я исправляю проблему, но имейте в виду, что лучше всего выбирать размер кеша таким образом, чтобы вы не превышали его в обычных обстоятельствах. Перебивать каналы — не лучшая практика. - person Gary Russell; 08.05.2020