Сервисная шина создаёт большое количество подключений в RabbitMQ
Ожидаемое поведение
Для каждого callback-клиента в текущей реализации должно создаваться одно подключение к RabbitMQ. Соединение после приёма сообщения должно закрываться, если оно боле не нужно.
Шаги воспроизведения
Запустить шину с RabbitMQ
Создать клиентов и callback-подписки
Отправлять сообщения в шину
Подождать
Ошибка воспроизводится на следующей конфигурации:
ОС:(linux, docker, mono)
Пути решения
Соединения либо не закрываются при приёме сообщений в шину. Либо при создании слушателей для callback-подписчиков. Также хорошим решением будет именовать подключения и писать информацию о соединении в debug.
Интеграционный тест на приём (RmqReceivingManager): добавить тест на приём (закрылось ли соединение после успешного приёма).
Интеграционный тест на отправку (RmqSendingManager): Для модуля отправки добавить тест, проверяющий, что callback-клиентов создаётся столько, сколько нужно.
Описание ошибки
Сервисная шина создаёт большое количество подключений в RabbitMQ
Ожидаемое поведение
Для каждого callback-клиента в текущей реализации должно создаваться одно подключение к RabbitMQ. Соединение после приёма сообщения должно закрываться, если оно боле не нужно.
Шаги воспроизведения
Ошибка воспроизводится на следующей конфигурации: ОС:
(linux, docker, mono)
Пути решения
Соединения либо не закрываются при приёме сообщений в шину. Либо при создании слушателей для callback-подписчиков. Также хорошим решением будет именовать подключения и писать информацию о соединении в debug.
Исходный код
Ветка: develop. Модули: NewPlatform.Flexberry.ServiceBus.Components.RmqReceivingManager, NewPlatform.Flexberry.ServiceBus.Components.RmqSendingManager
Тесты
Интеграционный тест на приём (RmqReceivingManager): добавить тест на приём (закрылось ли соединение после успешного приёма). Интеграционный тест на отправку (RmqSendingManager): Для модуля отправки добавить тест, проверяющий, что callback-клиентов создаётся столько, сколько нужно.
Скриншоты, полезные ссылки