public override void ProcessPartitionData(
            TopicAndPartition topicAndPartition, long fetchOffset, FetchResponsePartitionData partitionData)
        {
            var pti = this.partitionMap.Get(topicAndPartition);
            if (pti.GetFetchOffset() != fetchOffset)
            {
                throw new Exception(string.Format("Offset doesn't match for partition [{0},{1}] pti offset: {2} fetch offset: {3}", topicAndPartition.Topic, topicAndPartition.Partiton, pti.GetFetchOffset(), fetchOffset));
            }

            pti.Enqueue((ByteBufferMessageSet)partitionData.Messages);
        }
 /// <summary>
 ///  process fetched Data
 /// </summary>
 /// <param name="topicAndPartition"></param>
 /// <param name="fetchOffset"></param>
 /// <param name="partitionData"></param>
 public abstract void ProcessPartitionData(
     TopicAndPartition topicAndPartition, long fetchOffset, FetchResponsePartitionData partitionData);