STORM 落入MONGO速度优化

1、改为单独线程池异步落库

public class G3SaveVehToDB extends WTBaseSpringBolt {
	/**
	 * 注释内容
	 */
	private static final long serialVersionUID = 1L;
	private final List<GnssInfo> QUEUES = new LinkedList<GnssInfo>();
	private ExecutorService threadpool;

	@SuppressWarnings("rawtypes")
	@Override
	public void prepare(Map stormConf, TopologyContext context) {
		super.prepare(stormConf, context);
		threadpool = Executors.newFixedThreadPool(2); // 长度为2的线程池,为了保证在处理数据的同时,数据还可以被接收
// 这里如果线程池初始化不写在这里会出错Bolt 'S-DB' contains a non-serializable field
	}


	@Override
	public void execute(Tuple input, BasicOutputCollector collector) {
		try {
			final GnssMessage msg = (GnssMessage) input.getValue(0);
			VehicleMessageBody vehicleMessageBody = (VehicleMessageBody) msg
					.getBody();

			GnssData gnssData = (GnssData) vehicleMessageBody.getData();
			GnssInfo gnss = new GnssInfo(vehicleMessageBody.getVehicleNo(),
					vehicleMessageBody.getVehicleColor(), gnssData);
			QUEUES.add(gnss);

			if (QUEUES.size() % 200 == 0) {
				threadpool.submit(new Runnable() {
					
					@Override
					public void run() {
						gnssInfoManager.batchSave2(QUEUES);
						QUEUES.clear();
						
					}
				});

			}

 

转载于:https://my.oschina.net/chuibilong/blog/859565

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值