code: func (conn *ProtoConnectionFields) sendSyncMessage(topic string, partition int32, key string, value proto.Message, manualMode bool) (offset int64, err error) {
  	data, err := conn.serializer.Marshal(value)
  	if err != nil {
  		return 0, err
  	}
  
  	if manualMode {
  		msg, err := conn.multiplexer.manSyncProducer.SendMsgToPartition(topic, partition, sarama.StringEncoder(key), sarama.ByteEncoder(data))
  		if err != nil {
  			return 0, err
  		}
  		return msg.Offset, err
  	}
  	msg, err := conn.multiplexer.hashSyncProducer.SendMsgToPartition(topic, partition, sarama.StringEncoder(key), sarama.ByteEncoder(data))
  	if err != nil {
  		return 0, err
  	}
  	return msg.Offset, err
  }
docs: // sendSyncMessage sends a message using the sync API. If manual mode is chosen, the appropriate producer will be used.