В компоненте PrioritySendingManager словарь _clientConnections заполняется в методе ScanMessages, а используется в том числе в TryEnqueue. Метод ScanMessages работает ассинхронно по таймеру, и при старте шины возникают ситуации, когда ScanMessages ещё не отработал, а TryEnqueue уже вызывают другие компоненты. Это приводит к неправильному поведению шины при запуске, а также к спаму в логах.
Ожидаемое поведение
Шина не должна спамить ошибками при запуске.
Шаги воспроизведения
Создать ситуацию, когда сообщения в шину начинают приходить раньше, чем ScanMessages успеет отработать в первый раз.
Пути решения
В первый раз нужно заполнить _clientConnections синхронно в методе Start или Prepare.
Описание ошибки
В компоненте PrioritySendingManager словарь _clientConnections заполняется в методе ScanMessages, а используется в том числе в TryEnqueue. Метод ScanMessages работает ассинхронно по таймеру, и при старте шины возникают ситуации, когда ScanMessages ещё не отработал, а TryEnqueue уже вызывают другие компоненты. Это приводит к неправильному поведению шины при запуске, а также к спаму в логах.
Ожидаемое поведение
Шина не должна спамить ошибками при запуске.
Шаги воспроизведения
Создать ситуацию, когда сообщения в шину начинают приходить раньше, чем ScanMessages успеет отработать в первый раз.
Пути решения
В первый раз нужно заполнить _clientConnections синхронно в методе Start или Prepare.