each consumer has its own buffer, works with one consumer