package com.xiaomi.infra.galaxy.talos.storm.config;
import backtype.storm.tuple.Fields;
import com.google.common.base.Charsets;
import com.xiaomi.infra.galaxy.talos.thrift.MessageAndOffset;
import com.xiaomi.infra.galaxy.talos.thrift.TopicAndPartition;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by jiasheng on 16-5-17.
*/
public class DefaultTalosStormScheme implements TalosStormScheme {
public static final String MESSAGE_STRING_SCHEME_KEY = "message";
public static final String OFFSET_LONG_SCHEME_KEY = "offset";
public static final String TOPIC_STRING_SCHEME_KEY = "topic";
public static final String PARTITION_INT_SCHEME_KEY = "partition";
@Override
public Iterable<List<Object>> generateTuples(TopicAndPartition topicPartition, MessageAndOffset msg) {
List<Object> tuple = new ArrayList<Object>();
tuple.add(new String(msg.getMessage().getMessage(), Charsets.UTF_8));
tuple.add(msg.messageOffset);
tuple.add(topicPartition.topicName);
tuple.add(topicPartition.partitionId);
return Arrays.asList(tuple);
}
@Override
public Fields getOutputFields() {
return new Fields(MESSAGE_STRING_SCHEME_KEY, OFFSET_LONG_SCHEME_KEY,
TOPIC_STRING_SCHEME_KEY, PARTITION_INT_SCHEME_KEY);
}
}