added async Consumer using semaphore