MyTxSpout 1

package com.sxt.storm.transactional;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

import backtype.storm.task.TopologyContext;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.transactional.ITransactionalSpout;
import backtype.storm.tuple.Fields;

public class MyTxSpout implements ITransactionalSpout<MyMeta> {
	/**
	 * 数据源
	 */
	Map<Long, String> dbMap = null;
	public MyTxSpout() {
		Random random = new Random();
		dbMap = new HashMap<Long, String>();
		String[] hosts = { "www.taobao.com" };
		String[] session_id = { 
				"ABYH6Y4V4SCVXTG6DPB4VH9U123", 
				"XXYH6YCGFJYERTT834R52FDXV9U34",
				"BBYH61456FGHHJ7JL89RG5VV9UYU7", 
				"CYYH6Y2345GHI899OFG4V9U567", 
				"VVVYH6Y4V4SFXZ56JIPDPB4V678" 
			};
		String[] time = { 
				"2017-02-21 08:40:50", 
				"2017-02-21 08:40:51", 
				"2017-02-21 08:40:52", 
				"2017-02-21 08:40:53",
				"2017-02-21 09:40:49", 
				"2017-02-21 10:40:49", 
				"2017-02-21 11:40:49", 
				"2017-02-21 12:40:49"
			};

		for (long i = 0; i < 100; i++) {
			dbMap.put(i, hosts[0] + "\t" + session_id[random.nextInt(5)] + "\t" + time[random.nextInt(8)]);
		}
	}

	private static final long serialVersionUID = 1L;

	@Override
	public backtype.storm.transactional.ITransactionalSpout.Coordinator<MyMeta> getCoordinator(Map conf,
			TopologyContext context) {
		return new MyCoordinator();
	}

	@Override
	public backtype.storm.transactional.ITransactionalSpout.Emitter<MyMeta> getEmitter(Map conf,
			TopologyContext context) {
		return new MyEmitter(dbMap);
	}

	@Override
	public void declareOutputFields(OutputFieldsDeclarer declarer) {
		declarer.declare(new Fields("tx", "log"));
	}

	@Override
	public Map<String, Object> getComponentConfiguration() {
		return null;
	}

}

  

posted @ 2018-07-06 10:21  uuhh  阅读(191)  评论(0编辑  收藏  举报