package com.alipay.bluewhale.core.task.executer; import java.util.Map; import org.apache.log4j.Logger; import backtype.storm.Config; import backtype.storm.spout.ISpout; import com.alipay.bluewhale.core.stats.BaseTaskStatsRolling; import com.alipay.bluewhale.core.stats.SpoutTaskStatsRolling; import com.alipay.bluewhale.core.stats.Stats; import com.alipay.bluewhale.core.task.transfer.TupleInfo; /** * spout���ɹ�����һ��tuple��ʱ���ͨ���˷���ִ��spout��ack���� * @author yannian * */ public class AckSpoutMsg implements Runnable { private static Logger LOG = Logger.getLogger(AckSpoutMsg.class); private ISpout spout; private Map storm_conf; private Object msg_id; private TupleInfo tuple; private Long time_delta; private BaseTaskStatsRolling task_stats; public AckSpoutMsg(ISpout _spout, Map _storm_conf, Object _msg_id, TupleInfo _tuple, Long _time_delta, BaseTaskStatsRolling _task_stats) { this.spout = _spout; this.storm_conf = _storm_conf; this.msg_id = _msg_id; this.tuple = _tuple; this.time_delta = _time_delta; this.task_stats = _task_stats; } public void run() { if (storm_conf.get(Config.TOPOLOGY_DEBUG).equals(Boolean.TRUE)) { LOG.info("Acking message " + msg_id); } spout.ack(msg_id); if (time_delta != null) { Stats.spout_acked_tuple((SpoutTaskStatsRolling) task_stats, tuple.getStream(), time_delta); } } }