Quellcode durchsuchen

修改重复开启任务后重复监听的问题

konghl vor 4 Jahren
Ursprung
Commit
6f2114a6ab

+ 29 - 11
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/impl/ListeningFileDirectoryServiceImpl.java

16
import java.util.Iterator;
16
import java.util.Iterator;
17
import java.util.List;
17
import java.util.List;
18
import java.util.Map;
18
import java.util.Map;
19
import java.util.Map.Entry;
19
import java.util.Timer;
20
import java.util.Timer;
20
import java.util.TimerTask;
21
import java.util.TimerTask;
21
22
48
    @Autowired
49
    @Autowired
49
    private KafkaProcess kafkaProcess;
50
    private KafkaProcess kafkaProcess;
50
    
51
    
51
    private static Map<String,Timer> timerMap=new HashMap<String,Timer>();
52
    
52
    //防止重启后重复监控文件
53
    private String taskName="pictureTask";
53
    private String taskName="pictureTask";
54
    private static Map<String,Timer> timerMap=new HashMap<String,Timer>();
55
    private static Map<String,WatchKey> keyMap=new HashMap<String,WatchKey>();
54
56
55
    @Override
57
    @Override
56
    public void getFile(String filePath,int index)  {
58
    public void getFile(String filePath,int index)  {
65
    	timerMap.get(timerMapKey).schedule(new TimerTask() {
67
    	timerMap.get(timerMapKey).schedule(new TimerTask() {
66
            @Override
68
            @Override
67
            public void run() {
69
            public void run() {
68
                WatchKey key;
70
                WatchKey watchKey;
69
                //System.out.println("filePath:   " + filePath);
71
                //System.out.println("filePath:   " + filePath);
70
                log.info("filePath:   " + filePath);
72
                log.info("filePath:   " + filePath);
71
                String mapKey = "";
73
                String mapKey = "";
78
                            File file = new File(filePath);//path为监听文件夹
80
                            File file = new File(filePath);//path为监听文件夹
79
                            //System.out.println("等待图片加载!");
81
                            //System.out.println("等待图片加载!");
80
                            log.info("等待图片加载!");
82
                            log.info("等待图片加载!");
81
                            key = watchService.take();//没有文件增加时,阻塞在这里
83
                            watchKey = watchService.take();//没有文件增加时,阻塞在这里
84
                            keyMap.put(timerMapKey, watchKey);
85
                            
82
                            int i = 0;
86
                            int i = 0;
83
                            String[] fileContent = new String[3600];
87
                            String[] fileContent = new String[3600];
84
                            for (WatchEvent<?> event : key.pollEvents()) {
88
                            for (WatchEvent<?> event : watchKey.pollEvents()) {
85
                                String fileName = filePath+MonitorManageConsts.getSystemSeparator()+event.context();
89
                                String fileName = filePath+MonitorManageConsts.getSystemSeparator()+event.context();
86
                                //System.out.println("增加文件的文件夹路径== :"+fileName);
90
                                //System.out.println("增加文件的文件夹路径== :"+fileName);
87
                                //System.out.println("增加文件的名称== :"+event.context());
91
                                //System.out.println("增加文件的名称== :"+event.context());
124
//                                Map<String, String> fileMap = fileManageService.uploadFile(mfile,null);
128
//                                Map<String, String> fileMap = fileManageService.uploadFile(mfile,null);
125
//                                System.out.println("pictureUrl=== " + fileMap.get("pictureUrl"));
129
//                                System.out.println("pictureUrl=== " + fileMap.get("pictureUrl"));
126
130
127
                            }if (!key.reset()) {
131
                            }if (!watchKey.reset()) {
128
                                break; //中断循环
132
                                break; //中断循环
129
                            }
133
                            }
130
                        }
134
                        }
171
		}
175
		}
172
    	
176
    	
173
        try{
177
        try{
174
        	Iterator<Map.Entry<String, Timer>> it = timerMap.entrySet().iterator();
175
    	    while(it.hasNext()){
176
    	        Map.Entry<String, Timer> entry = it.next();
177
    	        entry.getValue().cancel();
178
        		it.remove(); 
178
        	Iterator<Map.Entry<String, Timer>> timerIt = timerMap.entrySet().iterator();
179
    	    while(timerIt.hasNext()){
180
    	        Map.Entry<String, Timer> entry = timerIt.next();
181
    	        Timer timer=entry.getValue();
182
    	        timer.cancel();
183
    	        timer=null;
184
        		timerIt.remove(); 
185
			}
186
    	    
187
			if (!CollectionUtils.isEmpty(keyMap)) {
188
				Iterator<Entry<String, WatchKey>> keyIt = keyMap.entrySet().iterator();
189
			    while(keyIt.hasNext()){
190
			        Map.Entry<String, WatchKey> entry = keyIt.next();
191
			        WatchKey watchKey=entry.getValue();
192
			        watchKey.cancel();
193
			        watchKey=null;
194
					keyIt.remove();
195
				}
179
			}
196
			}
197
			
180
        }catch(Exception e){
198
        }catch(Exception e){
181
           log.error("removeTimer is error :"+e.getMessage());  
199
           log.error("removeTimer is error :"+e.getMessage());  
182
           return "关闭失败";
200
           return "关闭失败";

+ 8 - 6
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/service/impl/MonitorManageServiceImpl.java

42
	//@Autowired
42
	//@Autowired
43
	//private SecurityProtectionMinioConfig minioConfig;
43
	//private SecurityProtectionMinioConfig minioConfig;
44
44
45
	private static boolean isBeginFlag=false;
46
45
	//监听状态
46
	private boolean isListenFlag=false;
47
	
47
	@Override
48
	@Override
48
	public String loadPictureFromDirectory() throws InterruptedException {
49
	public String loadPictureFromDirectory() throws InterruptedException {
49
		if (!isBeginFlag) {
50
		if (!isListenFlag) {
50
			//监听文件目录,加载文件
51
			//监听文件目录,加载文件
51
			loadFileList();
52
			loadFileList();
52
			isBeginFlag=true;
53
			isListenFlag=true;
53
			log.info("图片监听开启成功");
54
			log.info("图片监听开启成功");
54
			return "开启成功";
55
			return "开启成功";
55
		}
56
		}
62
		File file = new File(baseFilePath);//path为监听文件夹
63
		File file = new File(baseFilePath);//path为监听文件夹
63
64
64
		File[] files = file.listFiles();
65
		File[] files = file.listFiles();
65
		int n=1;
66
		int n=0;
66
		//摄像头列表
67
		//摄像头列表
67
		for(File file1:files){
68
		for(File file1:files){
68
			file1.getName();
69
			file1.getName();
84
				n++;
85
				n++;
85
			}
86
			}
86
		}
87
		}
88
		log.info("此次开启监听"+n+"个文件夹");
87
	}
89
	}
88
	
90
	
89
	/**
91
	/**
93
		log.debug("关闭图片监听");
95
		log.debug("关闭图片监听");
94
		String result=listeningFileDirectoryService.removeTimer();
96
		String result=listeningFileDirectoryService.removeTimer();
95
		
97
		
96
		isBeginFlag=false;
98
		isListenFlag=false;
97
		log.info("关闭图片监听:"+result);
99
		log.info("关闭图片监听:"+result);
98
		return result;
100
		return result;
99
	}
101
	}

+ 2 - 0
monitor-manage-service/src/main/java/com/ai/bss/monitorManage/utils/AiIdenUtils.java

98
		} finally {
98
		} finally {
99
			try {
99
			try {
100
				is.close();
100
				is.close();
101
			} catch (NullPointerException e) {
102
				log.error("getBufferedImage is NullPointerException1: " + e.getMessage() + ", filePath=" + filePath);
101
			} catch (IOException e) {
103
			} catch (IOException e) {
102
				log.error("getBufferedImage is IOException1: " + e.getMessage() + ", filePath=" + filePath);
104
				log.error("getBufferedImage is IOException1: " + e.getMessage() + ", filePath=" + filePath);
103
			}
105
			}