Flexberry / NewPlatform.Flexberry.ServiceBus

Flexberry Service Bus - Runtime service
MIT License
3 stars 4 forks source link

Большое количество соединений в RabbitMQ #55

Closed BatNiy closed 5 years ago

BatNiy commented 5 years ago

Описание ошибки

Сервисная шина создаёт большое количество подключений в RabbitMQ

Ожидаемое поведение

Для каждого callback-клиента в текущей реализации должно создаваться одно подключение к RabbitMQ. Соединение после приёма сообщения должно закрываться, если оно боле не нужно.

Шаги воспроизведения

  1. Запустить шину с RabbitMQ
  2. Создать клиентов и callback-подписки
  3. Отправлять сообщения в шину
  4. Подождать

Ошибка воспроизводится на следующей конфигурации: ОС: (linux, docker, mono)

Пути решения

Соединения либо не закрываются при приёме сообщений в шину. Либо при создании слушателей для callback-подписчиков. Также хорошим решением будет именовать подключения и писать информацию о соединении в debug.

Исходный код

Ветка: develop. Модули: NewPlatform.Flexberry.ServiceBus.Components.RmqReceivingManager, NewPlatform.Flexberry.ServiceBus.Components.RmqSendingManager

Тесты

Интеграционный тест на приём (RmqReceivingManager): добавить тест на приём (закрылось ли соединение после успешного приёма). Интеграционный тест на отправку (RmqSendingManager): Для модуля отправки добавить тест, проверяющий, что callback-клиентов создаётся столько, сколько нужно.

Скриншоты, полезные ссылки

image

BatNiy commented 5 years ago

При тестировании обнаружилось, что коннекции прослушивания очередей закрываются сразу же после открытия.