consumer producer pattern 6906927