package backtype.storm.transactional.partitioned; import backtype.storm.coordination.BatchOutputCollector; import backtype.storm.task.TopologyContext; import backtype.storm.topology.IComponent; import backtype.storm.transactional.TransactionAttempt; import java.util.Map; /** * This defines a transactional spout which does *not* necessarily * replay the same batch every time it emits a batch for a transaction id. */ public interface IOpaquePartitionedTransactionalSpout<T> extends IComponent { public interface Emitter<X> { /** * Emit a batch of tuples for a partition/transaction. * * Return the metadata describing this batch that will be used as lastPartitionMeta * for defining the parameters of the next batch. */ X emitPartitionBatch(TransactionAttempt tx, BatchOutputCollector collector, int partition, X lastPartitionMeta); int numPartitions(); void close(); } Emitter<T> getEmitter(Map conf, TopologyContext context); }