Use consumer callback rather than the blocking call to receive message