Я внедряю собственный регистратор, который регистрирует в AWS CloudWatch, и это асинхронный регистратор. Регистратор работает на моей службе WCF, и несколько потоков пытаются войти в систему одновременно. Я создал потокобезопасный одноэлементный доступ для ведения журналов, но AWS CloudWatch SDK не может отправить следующий журнал, пока он не завершит отправку текущего.
Так что моя идея состоит в том, чтобы объединить сообщения журнала в ConcurrentBag, и как только он достигнет нескольких N членов, я отправлю журналы в пакете в CloudWatch (SDK позволяет это, так что все хорошо).
Процесс идет следующим образом: Любой поток вызывает регистратор> Регистратор добавляет сообщение в ConcurrentBag> Поток отправителя продолжает проверять счет (или один и тот же)> Если счет>> N, отправлять пакетный журнал и блокировать другие потоки от добавления во время отправки> повторить
Процесс не должен ждать ответа, чтобы начать добавление снова в ConcurrentBag.
Каков наилучший подход для этого?