how do you write a function which doesn't hang when u read from a channel and u are pushing to another channel :   consider a function like this 
        func (sc *saramaConsumer) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error {    
        
            for msg  := range claim.Messages() {
                 sc.messages <- msg //this would hang the call if no one is reading from sc.messages and u can never exit consume cliam
             }
        }