code: func (ref *AsyncProducer) SendMsgByte(topic string, key []byte, msg []byte, metadata interface{}) {
  	// generate key if none supplied - used by Hash partitioner
  	if key == nil || len(key) == 0 {
  		md5Sum := fmt.Sprintf("%x", md5.Sum(msg))
  		ref.SendMsgToPartition(topic, ref.Partition, sarama.ByteEncoder([]byte(md5Sum)), sarama.ByteEncoder(msg), metadata)
  		return
  	}
  	ref.SendMsgToPartition(topic, ref.Partition, sarama.ByteEncoder(key), sarama.ByteEncoder(msg), metadata)
  }
docs: // SendMsgByte sends an async message to Kafka.