浏览代码

优化场景构建逻辑

tianboguang 2 年之前
父节点
当前提交
f8156a2de2

+ 12 - 0
src/main/java/com/fdkankan/modeling/entity/BuildLog.java

@@ -38,6 +38,12 @@ public class BuildLog implements Serializable {
     private String messageId;
 
     /**
+     * 消息id
+     */
+    @TableField("content")
+    private String content;
+
+    /**
      * 场景码
      */
     @TableField("scene_num")
@@ -101,4 +107,10 @@ public class BuildLog implements Serializable {
     @TableField("update_time")
     private Date updateTime;
 
+    /**
+     * 结束计算时间
+     */
+    @TableField("result_queue_name")
+    private String resultQuequeName;
+
 }

+ 5 - 5
src/main/java/com/fdkankan/modeling/receiver/RabbitMqListener.java

@@ -109,6 +109,7 @@ public class RabbitMqListener {
         BuildLog buildLog = new BuildLog();
         log.info("场景计算开始,队列名:{},id:{},deliveryTag:{},消息体:{}", queueModelingCall, messageId,deliveryTag,msg);
         buildLog.setMessageId(messageId);
+        buildLog.setContent(msg);
 
         this.process(buildSceneMessage,buildLog);
         log.info("场景计算结束,队列名:{},id:{}", queueModelingCall, messageId);
@@ -122,6 +123,9 @@ public class RabbitMqListener {
         StopWatch watch = new StopWatch();
         watch.start();
         final BuildSceneResultBean buildSceneResult = new BuildSceneResultBean();
+        String resultQueueName = StrUtil.isNotBlank(message.getResultReceiverMqName()) ?
+                message.getResultReceiverMqName() : queueModelingPost;
+        buildSceneResult.setResultQueueName(resultQueueName);
         ModelingBuildStatus status = null;
         try {
             Map<String,Object> buildContext = new HashMap<>();
@@ -152,8 +156,6 @@ public class RabbitMqListener {
                 buildLog.setStatus(((BuildException) e.getCause()).getBuildStatus().code());
             } else {
                 status = ModelingBuildStatus.FAILED;
-                //未知异常,记录异常信息
-//                buildLog.setReason(ExceptionUtil.stacktraceToString(e, 3000));
             }
         }
         buildLog.setStatus(status.code());
@@ -166,8 +168,6 @@ public class RabbitMqListener {
 
     private ModelingBuildStatus buildScene(Map<String,Object> buildContext,BuildSceneCallMessage message, BuildSceneResultBean buildSceneResult,BuildLog logRecord) throws Exception{
         //如果mq生产者在消息体中设置了结算结果mq队列名,就发到这个队列,否则就发送到默认队列
-        String resultQueueName = StrUtil.isNotBlank(message.getResultReceiverMqName()) ?
-                message.getResultReceiverMqName() : queueModelingPost;
         String path = message.getPath();
         String num = message.getSceneNum();
         //不同的相机不同的方法
@@ -178,7 +178,6 @@ public class RabbitMqListener {
         //判断调用V2还是V3版本的算法
         String buildType = ObjectUtils.isEmpty(message.getBuildType()) ? "V2" : message.getBuildType();
 
-        buildSceneResult.setResultQueueName(resultQueueName);
         buildSceneResult.setCameraType(cameraType);
         buildSceneResult.setNum(num);
         buildSceneResult.setPath(path);
@@ -242,6 +241,7 @@ public class RabbitMqListener {
                 redisUtil.del(SysConstants.SCENE_BUILDING + buildLog.getSceneNum());
             }
             buildLog.setUpdateTime(new Date());
+            buildLog.setResultQuequeName(buildSceneResult.getResultQueueName());
             buildLogService.updateById(buildLog);
         } catch (Exception e) {
             log.error("计算后业务处理出错!", e);