StartCommand.java 1.84 KB
package com.bsth;


import com.bsth.data.msg_queue.SignalAndAttConsumeQueue;
import com.bsth.data.real_park.BerthDataBuffer;
import com.bsth.data.real_park.CarParkRealHandler;
import com.bsth.data.real_park.thread.RealParkDataPersistenceThread;
import com.bsth.data.signal.thread.SignalPstThread;
import com.bsth.security.SecurityMetadataSourceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;


/**
 * 随应用启动运行
 * @author PanZhao
 *
 */
@Component
public class StartCommand implements CommandLineRunner{

	@Autowired
	SecurityMetadataSourceService invocationSecurityMetadataSourceService;
	@Autowired
    SignalPstThread signalPstThread;
	@Autowired
	BerthDataBuffer.BerthCacheRefreshThread berthCacheRefreshThread;
	@Autowired
	RealParkDataPersistenceThread realParkDataPersistenceThread;

	@Autowired
	CarParkRealHandler carParkRealHandler;

	@Override
	public void run(String... arg0){
		
		try {
			//启动时加载所有资源
			invocationSecurityMetadataSourceService.loadResourceDefine();

			//signal、牌照识别、查询一体机数据消费队列
			SignalAndAttConsumeQueue.start();

			ScheduledExecutorService sexec = Application.mainServices;
			//进出场数据入库线程
			sexec.scheduleWithFixedDelay(signalPstThread, 30, 10, TimeUnit.SECONDS);

			//泊位缓存刷新
			sexec.scheduleWithFixedDelay(berthCacheRefreshThread, 0, 60 * 2, TimeUnit.SECONDS);

			//从数据库恢复场内实时停放数据
			carParkRealHandler.recovery();
			//实时场内停放数据入库
			sexec.scheduleWithFixedDelay(realParkDataPersistenceThread, 40, 30, TimeUnit.SECONDS);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}