changing and fixing concurrency logic in Producer.SendMessageAsync by using SemaphoreSlim