|
@@ -30,11 +30,9 @@ import java.util.concurrent.*;
|
|
|
@RabbitListener(queues = RabbitConfig.PANO_QUEUE) // 指定监听队列
|
|
|
public class Fd720Listener {
|
|
|
|
|
|
-// @Autowired
|
|
|
-// ConfigConstant configConstant;
|
|
|
|
|
|
- @Autowired
|
|
|
- FodderMapper fodderMapper;
|
|
|
+// @Autowired
|
|
|
+// FodderMapper fodderMapper;
|
|
|
|
|
|
@Autowired
|
|
|
FodderService fodderService;
|
|
@@ -49,127 +47,103 @@ public class Fd720Listener {
|
|
|
traceId = System.currentTimeMillis()+"";
|
|
|
MDC.put("TRACE_ID", traceId);
|
|
|
|
|
|
- log.info("监听消息start: {}, uuid: {}", param, traceId);
|
|
|
+ log.info("监听消息_1_start: {}, uuid: {}", param, traceId);
|
|
|
try {
|
|
|
Thread.sleep(300);
|
|
|
} catch (InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
- processPano(param, traceId);
|
|
|
+// processPano(param, traceId);
|
|
|
+ fodderService.doSlice(param, traceId);
|
|
|
|
|
|
|
|
|
- log.info("监听消息end: {}, uuid: {}", param, traceId);
|
|
|
+ log.info("监听消息_1_end: {}, uuid: {}", param, traceId);
|
|
|
}
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * 切图会超时控制
|
|
|
- * @param id
|
|
|
- */
|
|
|
- public void processPano(Long id, String traceId) {
|
|
|
- MDC.put("TRACE_ID", traceId);
|
|
|
+// /**
|
|
|
+// * 切图会超时控制
|
|
|
+// * @param id
|
|
|
+// */
|
|
|
+// public void processPano(Long id, String traceId) {
|
|
|
+// MDC.put("TRACE_ID", traceId);
|
|
|
+//
|
|
|
+// log.info("切图流程开始 : " + id);
|
|
|
+// long start = System.currentTimeMillis();
|
|
|
+// FodderEntity entity = fodderMapper.findById(id);
|
|
|
+// if (entity == null) {
|
|
|
+// log.error("场景不存在: " + id);
|
|
|
+// // 直接结束,抛异常的话,会造成死循环,产生大量日志,而且队列也跑不下去
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// String panoPath = entity.getFilePath();
|
|
|
+// String sceneCode = entity.getSceneCode();
|
|
|
+// String cmd = CmdConstant.PANO_KRPANO + panoPath;
|
|
|
+//
|
|
|
+//
|
|
|
+// // 超时处理机制
|
|
|
+// final ExecutorService exec = Executors.newFixedThreadPool(1);
|
|
|
+// Callable<String> call = new Callable<String>() {
|
|
|
+// @Override
|
|
|
+// public String call() throws Exception {
|
|
|
+// MDC.put("TRACE_ID", traceId);
|
|
|
+// CmdUtils.callLine(cmd, 200);
|
|
|
+// long end = System.currentTimeMillis();
|
|
|
+// log.info("切图完成耗时: {} s" ,(end-start)/1000);
|
|
|
+// log.warn("end processListener : "+ id);
|
|
|
+// return "执行完成";
|
|
|
+// }
|
|
|
+// };
|
|
|
+// // 超时回调
|
|
|
+// Future<String> future = exec.submit(call);
|
|
|
+// try {
|
|
|
+// String obj = future.get(10, TimeUnit.MINUTES); //任务处理超时时间设为 3分钟
|
|
|
+// entity.setStatus(3);
|
|
|
+// String tourXmlScene = fodderService.getTourXmlScene(sceneCode);
|
|
|
+// entity.setTour(tourXmlScene);
|
|
|
+// // 上传切图目录
|
|
|
+// // uploadOss(sceneCode);
|
|
|
+// fodderService.uploadOss(sceneCode);
|
|
|
+// log.info("任务成功返回: " + obj);
|
|
|
+// } catch (InterruptedException e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// entity.setStatus(2);
|
|
|
+// StringWriter trace=new StringWriter();
|
|
|
+// log.error(trace.toString());
|
|
|
+// log.error("异常了 InterruptedException");
|
|
|
+// } catch (ExecutionException | BaseRuntimeException e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// StringWriter trace=new StringWriter();
|
|
|
+// e.printStackTrace(new PrintWriter(trace));
|
|
|
+// log.error("超时了 1");
|
|
|
+// // 异常日志要打印,不然不会出现在日志文件中,只会出现在控制台
|
|
|
+// log.error(trace.toString());
|
|
|
+// entity.setStatus(2);
|
|
|
+// future.cancel(true);
|
|
|
+// } catch (TimeoutException e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// StringWriter trace=new StringWriter();
|
|
|
+// e.printStackTrace(new PrintWriter(trace));
|
|
|
+// log.error("超时了 2");
|
|
|
+// log.error(trace.toString());
|
|
|
+// entity.setStatus(2);
|
|
|
+// future.cancel(true);
|
|
|
+// } finally {
|
|
|
+// entity.setUpdateTime(new Date());
|
|
|
+// fodderMapper.updateByPrimaryKey(entity);
|
|
|
+// log.info("切图流程, 更新数据库完成 : " + id);
|
|
|
+// }
|
|
|
+// log.info("切图流程结束 : " + id);
|
|
|
+// }
|
|
|
|
|
|
- log.info("切图流程开始 : " + id);
|
|
|
- long start = System.currentTimeMillis();
|
|
|
- FodderEntity entity = fodderMapper.findById(id);
|
|
|
- if (entity == null) {
|
|
|
- log.error("场景不存在: " + id);
|
|
|
- // 直接结束,抛异常的话,会造成死循环,产生大量日志,而且队列也跑不下去
|
|
|
- return;
|
|
|
- }
|
|
|
- String panoPath = entity.getFilePath();
|
|
|
- String sceneCode = entity.getSceneCode();
|
|
|
- String cmd = CmdConstant.PANO_KRPANO + panoPath;
|
|
|
-
|
|
|
-
|
|
|
- // 超时处理机制
|
|
|
- final ExecutorService exec = Executors.newFixedThreadPool(1);
|
|
|
- Callable<String> call = new Callable<String>() {
|
|
|
- @Override
|
|
|
- public String call() throws Exception {
|
|
|
- MDC.put("TRACE_ID", traceId);
|
|
|
- CmdUtils.callLine(cmd, 200);
|
|
|
- long end = System.currentTimeMillis();
|
|
|
- log.info("切图完成耗时: {} s" ,(end-start)/1000);
|
|
|
- log.warn("end processListener : "+ id);
|
|
|
- return "执行完成";
|
|
|
- }
|
|
|
- };
|
|
|
- // 超时回调
|
|
|
- Future<String> future = exec.submit(call);
|
|
|
- try {
|
|
|
- String obj = future.get(10, TimeUnit.MINUTES); //任务处理超时时间设为 3分钟
|
|
|
- entity.setStatus(3);
|
|
|
- String tourXmlScene = fodderService.getTourXmlScene(sceneCode);
|
|
|
- entity.setTour(tourXmlScene);
|
|
|
- // 上传切图目录
|
|
|
- // uploadOss(sceneCode);
|
|
|
- fodderService.uploadOss(sceneCode);
|
|
|
- log.info("任务成功返回: " + obj);
|
|
|
- } catch (InterruptedException e) {
|
|
|
- e.printStackTrace();
|
|
|
- entity.setStatus(2);
|
|
|
- StringWriter trace=new StringWriter();
|
|
|
- log.error(trace.toString());
|
|
|
- log.error("异常了 InterruptedException");
|
|
|
- } catch (ExecutionException | BaseRuntimeException e) {
|
|
|
- e.printStackTrace();
|
|
|
- StringWriter trace=new StringWriter();
|
|
|
- e.printStackTrace(new PrintWriter(trace));
|
|
|
- log.error("超时了 1");
|
|
|
- // 异常日志要打印,不然不会出现在日志文件中,只会出现在控制台
|
|
|
- log.error(trace.toString());
|
|
|
- entity.setStatus(2);
|
|
|
- future.cancel(true);
|
|
|
- } catch (TimeoutException e) {
|
|
|
- e.printStackTrace();
|
|
|
- StringWriter trace=new StringWriter();
|
|
|
- e.printStackTrace(new PrintWriter(trace));
|
|
|
- log.error("超时了 2");
|
|
|
- log.error(trace.toString());
|
|
|
- entity.setStatus(2);
|
|
|
- future.cancel(true);
|
|
|
- } finally {
|
|
|
- entity.setUpdateTime(new Date());
|
|
|
- fodderMapper.updateByPrimaryKey(entity);
|
|
|
- log.info("切图流程, 更新数据库完成 : " + id);
|
|
|
- }
|
|
|
- log.info("切图流程结束 : " + id);
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * 上传切图目录
|
|
|
- */
|
|
|
-// private void uploadOss(String sceneCode){
|
|
|
-// String cmd = CmdConstant.OSSUTIL_UPLOAD_DIR;
|
|
|
-// cmd = cmd.replaceAll("@sceneCode", sceneCode);
|
|
|
-// log.info("ossCmd: " + cmd);
|
|
|
-// long start = System.currentTimeMillis();
|
|
|
-// CmdUtils.callshell(cmd);
|
|
|
-// long end = System.currentTimeMillis();
|
|
|
-// log.info("切图上传完成, 耗时:{} s" , (end-start)/1000 );
|
|
|
-// }
|
|
|
|
|
|
- @Test
|
|
|
- public void test(){
|
|
|
- CmdUtils.callshell("ipconfig");
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
-// /**
|
|
|
-// * by owen 2022-4-1
|
|
|
-// * 打印错误详情
|
|
|
-// * @param e
|
|
|
-// */
|
|
|
-// private void printErrorMsg(BaseRuntimeException e){
|
|
|
-// StringWriter trace=new StringWriter();
|
|
|
-// e.printStackTrace(new PrintWriter(trace));
|
|
|
-// log.error(trace.toString());
|
|
|
-// }
|
|
|
|
|
|
|
|
|
|