Explorar el Código

增加延迟队列,修改生成材质文件的逻辑

xiewenjie hace 3 años
padre
commit
65be9e1549

+ 6 - 6
sxz-application/src/main/resources/application-dev.properties

@@ -19,9 +19,9 @@ spring.servlet.multipart.enabled=true
 spring.mvc.async.request-timeout=600000
 spring.web.resources.static-locations=classpath:/META-INF/resources/,classpath:/data/, classpath:/static/, file:${server.file.location}
 #数据库配置
-spring.datasource.url=jdbc:mysql://47.115.41.194:3306/change_clothes?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
+spring.datasource.url=jdbc:mysql://192.168.0.47:3306/change_clothes?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
 spring.datasource.username=root
-spring.datasource.password=4dyjkz%
+spring.datasource.password=123123
 # Hikari will use the above plus the following to setup connection pooling
 spring.datasource.type=com.zaxxer.hikari.HikariDataSource
 spring.datasource.hikari.minimum-idle=5
@@ -68,9 +68,9 @@ j2cache.open-spring-cache=true
 j2cache.j2CacheConfig.serialization=fastjson
 j2cache.cache-clean-mode=active
 j2cache.redis-client=lettuce
-j2cache.j2CacheConfig.hosts=127.0.0.1:6379
-j2cache.j2CacheConfig.password=1234
-j2cache.j2CacheConfig.database=4
+j2cache.j2CacheConfig.hosts=192.168.0.47:6379
+j2cache.j2CacheConfig.password=
+j2cache.j2CacheConfig.database=15
 oss.point=http://oss-cn-shenzhen.aliyuncs.com
 oss.key=LTAIUrvuHqj8pvry
 oss.secrey=JLOVl0k8Ke0aaM8nLMMiUAZ3EiiqI4
@@ -86,7 +86,7 @@ model.build.url=http://192.168.0.30:8100/
 max.obj.url=http://192.168.0.75:8080/
 dingding.warning.address=https://oapi.dingtalk.com/robot/send?access_token=13ae02d6821a56ce86c3e6ad98d0260896eba5888a9bd18aed141c39f11299a8
 #缓存接口日志时间(单位小时)
-logsTimeOut=4
+logsTimeOut=8
 driveLetter=Z:
 #雪花ID生成终端ID
 snowflake.wordId=2

+ 1 - 1
sxz-application/src/main/resources/application-devuat.properties

@@ -87,7 +87,7 @@ model.build.url=http://192.168.0.142:8100/
 max.obj.url=http://192.168.0.75:8080/
 dingding.warning.address=https://oapi.dingtalk.com/robot/send?access_token=13ae02d6821a56ce86c3e6ad98d0260896eba5888a9bd18aed141c39f11299a8
 #缓存接口日志时间(单位小时)
-logsTimeOut=4
+logsTimeOut=8
 driveLetter=Z:
 #雪花ID生成终端ID
 snowflake.wordId=3

+ 1 - 1
sxz-application/src/main/resources/application-prod.properties

@@ -86,7 +86,7 @@ model.build.url=http://101.66.188.5:8100/
 #.max转datasmith和obj加减面url
 max.obj.url=http://120.78.65.189:8080/
 #缓存接口日志时间(单位小时)
-logsTimeOut=4
+logsTimeOut=8
 driveLetter=Z:
 #雪花ID生成终端ID
 snowflake.wordId=1

+ 1 - 1
sxz-application/src/main/resources/application-uat.properties

@@ -87,7 +87,7 @@ model.build.url=http://192.168.0.142:8100/
 max.obj.url=http://192.168.0.75:8080/
 dingding.warning.address=https://oapi.dingtalk.com/robot/send?access_token=13ae02d6821a56ce86c3e6ad98d0260896eba5888a9bd18aed141c39f11299a8
 #缓存接口日志时间(单位小时)
-logsTimeOut=4
+logsTimeOut=8
 driveLetter=Z:
 server.tomcat.basedir=/mnt/tomcatTmp
 #雪花ID生成终端ID

+ 5 - 2
sxz-common/src/main/java/com/fdkk/sxz/logging/LogAppender.java

@@ -23,7 +23,8 @@ public class LogAppender extends ConsoleAppender<ILoggingEvent> {
         if (eventObject.getMessage().contains("::")) {
             message = eventObject.getMessage().split("::")[0];
         }
-        Log log = new Log(eventObject.getLoggerName(), eventObject.getFormattedMessage(), eventObject.getThreadName(), DateUtil.convert2CST(eventObject.getTimeStamp()), eventObject.getLevel().toString(),
+        Log log = new Log(eventObject.getLoggerName(), eventObject.getFormattedMessage(), eventObject.getThreadName(), DateUtil.convert2CST(eventObject.getTimeStamp()),
+                eventObject.getLevel().toString(),
                 TRACE_ID, message);
         //添加到阻塞队列
         if (!log.getMessage().contains("/logging/") &&
@@ -35,7 +36,9 @@ public class LogAppender extends ConsoleAppender<ILoggingEvent> {
                 !log.getMessage().contains("swagger") &&
                 !log.getMessage().contains("favicon") &&
                 !log.getMessage().contains("worker.js") &&
-                !log.getLoggerName().contains("HikariDataSource") && StrUtil.isNotEmpty(TRACE_ID)) {
+                !log.getLoggerName().contains("HikariDataSource") &&
+                !log.getLoggerName().contains("IModelHandelStepMapper") &&
+                !log.getLoggerName().contains("tb_model_handel_step") && StrUtil.isNotEmpty(TRACE_ID)) {
 
             DataContext.tempLogQueue.add(log);
         }

+ 8 - 2
sxz-core/src/main/java/com/fdkk/sxz/other/listener/RunBuild.java

@@ -186,10 +186,11 @@ public class RunBuild {
         if (FileUtil.exist(file)) {
             if (type.equals("1")) {
                 uploadToOssUtil.uploadTo4dTjw(path, "domain/eHome/furniture/temp/" + fileId + ".mview");
+                return true;
             } else {
                 uploadToOssUtil.uploadTo4dTjw(path, "domain/eHome/furniture/models/" + fileId + ".mview");
+                return true;
             }
-            return true;
         } else {
             int count = 20;
             boolean flag = true;
@@ -198,10 +199,11 @@ public class RunBuild {
                     RunBuild.log.info("BuildMview文件存在{}", fileId);
                     if (type.equals("1")) {
                         uploadToOssUtil.uploadTo4dTjw(path, "domain/eHome/furniture/temp/" + fileId + ".mview");
+                        return true;
                     } else {
                         uploadToOssUtil.uploadTo4dTjw(path, "domain/eHome/furniture/models/" + fileId + ".mview");
+                        return true;
                     }
-                    flag = false;
                 } else {
                     ThreadUtil.sleep(1000);
                 }
@@ -838,6 +840,7 @@ public class RunBuild {
                 TimeInterval timer = cn.hutool.core.date.DateUtil.timer();
                 //开始计时
                 timer.start();
+                timer.start("global");
                 String maxUrl = maxObjUrl + "maxToDatasmith?uuid=" + fileId + "&max=" + maxName + "&flag=" + flag;
                 RunBuild.log.info("请求maxToDataSmith地址-{}", maxUrl);
                 OkHttpUtils.httpGet(maxUrl);
@@ -987,6 +990,7 @@ public class RunBuild {
                         modelHandelStep.setStepRemarks("结束");
                         modelHandelStep.setType(Integer.valueOf(UploadType));
                         modelHandelStep.setParentId(Long.valueOf(modelUploadId));
+                        modelHandelStep.setUseTime(String.valueOf(timer.intervalMs("global")));
                         modelHandelStepService.save(modelHandelStep);
                         break;
                     case "2":
@@ -1176,6 +1180,7 @@ public class RunBuild {
                         modelHandelStep.setStepRemarks("结束");
                         modelHandelStep.setType(Integer.valueOf(UploadType));
                         modelHandelStep.setParentId(Long.valueOf(modelUploadId));
+                        modelHandelStep.setUseTime(String.valueOf(timer.intervalMs("global")));
                         modelHandelStepService.save(modelHandelStep);
                         RunBuild.log.info("配件逻处理完毕");
                         break;
@@ -1248,6 +1253,7 @@ public class RunBuild {
                         modelHandelStep.setStepRemarks("结束");
                         modelHandelStep.setType(Integer.valueOf(UploadType));
                         modelHandelStep.setParentId(Long.valueOf(modelUploadId));
+                        modelHandelStep.setUseTime(String.valueOf(timer.intervalMs("global")));
                         modelHandelStepService.save(modelHandelStep);
                         break;
 

+ 18 - 6
sxz-core/src/main/java/com/fdkk/sxz/other/mq/TopicRabbitConfig.java

@@ -1,12 +1,12 @@
 package com.fdkk.sxz.other.mq;
 
-import org.springframework.amqp.core.Binding;
-import org.springframework.amqp.core.BindingBuilder;
-import org.springframework.amqp.core.Queue;
-import org.springframework.amqp.core.TopicExchange;
+import org.springframework.amqp.core.*;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Created by Hb_zzZ on 2020/9/17.
  */
@@ -30,9 +30,21 @@ public class TopicRabbitConfig {
     public final static String MODEL = "topic.model";
 
     //处理
-    public final static String MVIEW = "topic.mview";
+    public final static String MVIEW = "delay.mview";
 
     public final static String TOPICE = "topicExchange";
+    /**
+     * 延迟消息交换机
+     */
+    public final static String DELAY_EXCHANGE = "delay.exchange";
+
+    @Bean
+    public CustomExchange delayMessageExchange() {
+        Map<String, Object> args = new HashMap<>();
+        args.put("x-delayed-type", "direct");
+        //自定义交换机
+        return new CustomExchange(TopicRabbitConfig.DELAY_EXCHANGE, "x-delayed-message", false, false, args);
+    }
 
     @Bean
     public Queue firstQueue() {
@@ -80,7 +92,7 @@ public class TopicRabbitConfig {
 
     @Bean
     Binding bindingExchangeMessage4() {
-        return BindingBuilder.bind(mviewQueue()).to(exchange()).with(TopicRabbitConfig.MVIEW);
+        return BindingBuilder.bind(mviewQueue()).to(delayMessageExchange()).with(TopicRabbitConfig.MVIEW).noargs();
     }
 
 }

+ 1 - 1
sxz-core/src/main/java/com/fdkk/sxz/system/controller/SysLogController.java

@@ -56,7 +56,7 @@ public class SysLogController {
     @ApiOperation(value = "查询操作日志详情列表")
     public PageResult<Object> details(QueryLog log, Page<LogInfo> page) {
 
-        List<String> list = redisUtil.lRange(log.getTraceId(), 0, -1);
+        List<String> list = redisUtil.lRange("TRACE_ID:" + log.getTraceId(), 0, -1);
 
         PageResult<Object> pageResult = new PageResult<>(list.size(), JSON.parseArray(list.toString()));
         return pageResult;

+ 5 - 4
sxz-core/src/main/java/com/fdkk/sxz/system/controller/SysModelLogController.java

@@ -50,10 +50,10 @@ public class SysModelLogController {
      * 查询所有用户
      */
     @GetMapping("/list")
-    @RequiresRoles("SYSADMIN")
+    @RequiresRoles(value = {"SYSADMIN", "REGEDIT_MEMBER"})
     @ApiOperation(value = "查询操作日志列表")
     public PageResult<ResponseModelUploadEntity> list(RequestModelUpload param, @CurrentUser User currentUser) {
-        param.setUserId(currentUser.getId());
+        param.setUserId(424L);
         PageInfo<ModelUploadEntity> pageLog = modelUploadService.listByPage(param);
 
         List<ResponseModelUploadEntity> collect = pageLog.getList().stream().map(a -> {
@@ -61,6 +61,7 @@ public class SysModelLogController {
             BeanUtils.copyProperties(a, responseModelUploadEntity);
             List<ModelHandelStepEntity> modelHandelStepEntityList = stepService.findByParentIdAndType(a.getId(), a.getFileType());
             responseModelUploadEntity.setStepEntities(modelHandelStepEntityList);
+            responseModelUploadEntity.setCacheData(null);
             return responseModelUploadEntity;
         }).collect(Collectors.toList());
         PageResult<ResponseModelUploadEntity> pageResult = new PageResult<ResponseModelUploadEntity>(pageLog.getTotal(), collect);
@@ -71,11 +72,11 @@ public class SysModelLogController {
      * 查询所有用户
      */
     @GetMapping("/details")
-    @RequiresRoles("SYSADMIN")
+    @RequiresRoles(value = {"SYSADMIN", "REGEDIT_MEMBER"})
     @ApiOperation(value = "查询操作日志详情列表")
     public PageResult<Object> details(QueryModelLog log) {
 
-        List<String> list = redisUtil.lRange(log.getTraceId(), 0, -1);
+        List<String> list = redisUtil.lRange("TRACE_ID:" + log.getTraceId(), 0, -1);
 
         PageResult<Object> pageResult = new PageResult<>(list.size(), JSON.parseArray(list.toString()));
         return pageResult;

+ 8 - 4
sxz-core/src/main/java/com/fdkk/sxz/webApi/controller/ManagerController.java

@@ -674,9 +674,14 @@ public class ManagerController extends BaseController {
         if (!saveFlag) {
             return Result.failure(CodeConstant.FAILURE_CODE_4008, CodeConstant.FAILURE_MSG_4008);
         }
-        rabbitTemplate.convertAndSend(TopicRabbitConfig.TOPICE, TopicRabbitConfig.MVIEW, renovationPartsDetailEntity.getId() + ":;1:;" + buildPath + modelUploadEntity.getObjPath().replace(".obj",
-                ".mview") + ":;" + modelUploadEntity.getFileId());
 
+        String messageStr = renovationPartsDetailEntity.getId() + ":;1:;" + buildPath + modelUploadEntity.getObjPath().replace(
+                ".obj", ".mview") + ":;" + modelUploadEntity.getFileId();
+        rabbitTemplate.convertAndSend(TopicRabbitConfig.DELAY_EXCHANGE, TopicRabbitConfig.MVIEW, messageStr, message -> {
+            // 设置过期时间
+            message.getMessageProperties().setDelay(1800000);
+            return message;
+        });
         //保存模型位置信息
         RenovationPartsAttachingEntity renovationPartsAttachingEntity = new RenovationPartsAttachingEntity();
         if ("wall".equals(param.getAttachingType())) {
@@ -797,9 +802,8 @@ public class ManagerController extends BaseController {
                 if (ObjectUtil.isNotNull(renovationPartsDetailEntity.getMviewPath())) {
                     uploadToOssUtil.copyTo4dTjw(renovationPartsDetailEntity.getMviewPath().replace(prefix, ""),
                             renovationPartsDetailEntity.getMviewPath().replace("/temp/", "/models/").replace(prefix, ""));
-                    renovationPartsDetailEntity.setMviewPath(renovationPartsDetailEntity.getMviewPath().replace("/temp/", "/models/"));
                     uploadToOssUtil.deleteTo4dTjw(renovationPartsDetailEntity.getMviewPath().replace(prefix, ""));
-
+                    renovationPartsDetailEntity.setMviewPath(renovationPartsDetailEntity.getMviewPath().replace("/temp/", "/models/"));
                 }
 
                 uploadToOssUtil.deleteTo4dTjw(renovationPartsDetailEntity.getImg().replace(prefix, ""));

+ 41 - 4
sxz-core/src/main/java/com/fdkk/sxz/webApi/controller/testController.java

@@ -1,16 +1,21 @@
 package com.fdkk.sxz.webApi.controller;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.fdkk.sxz.base.BaseController;
 import com.fdkk.sxz.base.Result;
+import com.fdkk.sxz.entity.ComponentModelUploadEntity;
+import com.fdkk.sxz.entity.ModelUploadEntity;
 import com.fdkk.sxz.entity.RenovationPartsDetailEntity;
 import com.fdkk.sxz.entity.custuom.CustomComponentEntity;
 import com.fdkk.sxz.entity.custuom.CustomProductFirstclassifyEntity;
 import com.fdkk.sxz.util.OkHttpUtils;
 import com.fdkk.sxz.util.RedisUtil;
 import com.fdkk.sxz.util.UploadToOssUtil;
+import com.fdkk.sxz.webApi.service.IComponentModelUploadService;
+import com.fdkk.sxz.webApi.service.IModelUploadService;
 import com.fdkk.sxz.webApi.service.IRenovationPartsDetailService;
 import com.fdkk.sxz.webApi.service.custom.ICustomComponentService;
 import com.fdkk.sxz.webApi.service.custom.ICustomProductFirstclassifyService;
@@ -21,6 +26,7 @@ import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import net.oschina.j2cache.CacheChannel;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
@@ -54,6 +60,14 @@ public class testController extends BaseController {
     @Autowired
     private ICustomComponentService customComponentService;
 
+    @Autowired
+    private IModelUploadService modelUploadService;
+
+    @Value("${prefix.ali}")
+    private String prefix;
+
+    @Autowired
+    private IComponentModelUploadService componentModelUploadService;
 
     /**
      * 替换所有为空的路径
@@ -68,8 +82,18 @@ public class testController extends BaseController {
         for (RenovationPartsDetailEntity renovationPartsDetailEntity : list) {
             if (ObjectUtil.isNotNull(renovationPartsDetailEntity.getMviewPath()) && StrUtil.isNotBlank(renovationPartsDetailEntity.getMviewPath())) {
                 if (!uploadToOssUtil.existFileToOSS(renovationPartsDetailEntity.getMviewPath(), "4d-tjw")) {
-                    renovationPartsDetailEntity.setMviewPath("");
-                    renovationPartsDetailService.updateById(renovationPartsDetailEntity);
+                    ModelUploadEntity byFileId = modelUploadService.findByFileId(renovationPartsDetailEntity.getName());
+                    String path = byFileId.getObjPath().replace(".obj", ".mview");
+                    if (ObjectUtil.isNotNull(byFileId) && FileUtil.exist(path)) {
+                        uploadToOssUtil.uploadTo4dTjw(path, "domain/eHome/furniture/temp/" + renovationPartsDetailEntity.getName() + ".mview");
+                        renovationPartsDetailEntity.setMviewPath(prefix + "domain/eHome/furniture/temp/" + renovationPartsDetailEntity.getName() + ".mview");
+                        renovationPartsDetailEntity.setMviewStatus(2);
+                        renovationPartsDetailService.updateById(renovationPartsDetailEntity);
+                    } else {
+                        renovationPartsDetailEntity.setMviewPath("");
+                        renovationPartsDetailEntity.setMviewStatus(-1);
+                        renovationPartsDetailService.updateById(renovationPartsDetailEntity);
+                    }
                 }
             }
         }
@@ -77,8 +101,21 @@ public class testController extends BaseController {
         for (CustomComponentEntity customComponentEntity : list1) {
             if (ObjectUtil.isNotNull(customComponentEntity.getMviewPath()) && StrUtil.isNotBlank(customComponentEntity.getMviewPath())) {
                 if (!uploadToOssUtil.existFileToOSS(customComponentEntity.getMviewPath(), "4d-tjw")) {
-                    customComponentEntity.setMviewPath("");
-                    customComponentService.updateById(customComponentEntity);
+                    ComponentModelUploadEntity byFileId = componentModelUploadService.findByFileId(customComponentEntity.getFileId());
+
+                    String path = byFileId.getObjPath().replace(".obj", ".mview");
+                    if (ObjectUtil.isNotNull(byFileId) && FileUtil.exist(path)) {
+                        uploadToOssUtil.uploadTo4dTjw(path, "domain/eHome/furniture/models/" + customComponentEntity.getFileId() + ".mview");
+
+                        customComponentEntity.setMviewPath(prefix + "domain/eHome/furniture/models/" + customComponentEntity.getFileId() + ".mview");
+                        customComponentEntity.setMviewStatus(2);
+                        customComponentService.updateById(customComponentEntity);
+                    } else {
+                        customComponentEntity.setMviewPath("");
+                        customComponentEntity.setMviewStatus(-1);
+                        customComponentService.updateById(customComponentEntity);
+                    }
+
                 }
             }
 

+ 1 - 1
sxz-core/src/main/java/com/fdkk/sxz/webApi/mapper/IRenovationPartsDetailMapper.java

@@ -43,7 +43,7 @@ public interface IRenovationPartsDetailMapper extends IBaseMapper<RenovationPart
             " a.parts_style_id AS partsStyleId, a.parts_classify_id AS partsClassifyId, " +
             " a.parts_shape_id AS partsShapeId, a.parts_brand_id AS partsBrandId, a.company_id AS companyId, a.description, a.img, " +
             " a.high_img AS highImg, a.path, a.key_word AS keyWord, a.NAME, a.zh_name AS zhName, " +
-            " a.TYPE, a.is_show AS isShow, a.examine, a.create_time AS createTime, a.has_toolbag as hasToolbag " +
+            " a.TYPE, a.is_show AS isShow, a.examine, a.create_time AS createTime, a.has_toolbag as hasToolbag ,a.mview_path as mviewPath " +
             " FROM tb_renovation_parts_detail a LEFT JOIN `tb_model_upload` b ON a.id = b.parts_detail_id " +
             " WHERE a.rec_status = 'A' " +
             "<if test= 'userId != null'> " +

+ 7 - 3
sxz-core/src/main/java/com/fdkk/sxz/webApi/service/impl/ComponentModelUploadServiceImpl.java

@@ -171,9 +171,13 @@ public class ComponentModelUploadServiceImpl extends BaseServiceImpl<IComponentM
                     ComponentModelUploadServiceImpl.log.info("上传obj到simpleObj-Mtl结束");
                     Boolean componentSaveFlag = customComponentService.save(customComponentEntity);
                     if (componentSaveFlag) {
-                        rabbitTemplate.convertAndSend(TopicRabbitConfig.TOPICE, TopicRabbitConfig.MVIEW,
-                                customComponentEntity.getId() + ":;2:;" + buildPath + componentModel.getObjPath().replace(".obj", ".mview") + ":;" + componentModel.getFileId());
-
+                        String messageStr = customComponentEntity.getId() + ":;2:;" + buildPath + componentModel.getObjPath().replace(".obj", ".mview") + ":;" + componentModel.getFileId();
+                        rabbitTemplate.convertAndSend(TopicRabbitConfig.DELAY_EXCHANGE, TopicRabbitConfig.MVIEW,
+                                messageStr, message -> {
+                                    // 设置过期时间
+                                    message.getMessageProperties().setDelay(1800000);
+                                    return message;
+                                });
                         componentModel.setPartsDetailId(customComponentEntity.getId());
                         updateById(componentModel);
                     }

+ 1 - 0
sxz-core/src/main/java/com/fdkk/sxz/webApi/service/impl/ModelHandelStepServiceImpl.java

@@ -32,6 +32,7 @@ public class ModelHandelStepServiceImpl extends BaseServiceImpl<IModelHandelStep
         if (ObjectUtil.isNotNull(fileType) && fileType > 0) {
             wrapper.eq(ModelHandelStepEntity::getType, fileType);
         }
+        wrapper.orderByDesc(ModelHandelStepEntity::getCreateTime);
         return list(wrapper);
     }
 }

+ 9 - 4
sxz-core/src/main/java/com/fdkk/sxz/webApi/service/impl/ModelUploadServiceImpl.java

@@ -93,8 +93,9 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
             wrapper.eq(ModelUploadEntity::getId, param.getId());
         }
         if (ObjectUtil.isNotNull(param.getUserId()) && param.getUserId() > 0) {
-            wrapper.eq(ModelUploadEntity::getFileId, param.getUserId());
+            wrapper.eq(ModelUploadEntity::getUserId, param.getUserId());
         }
+        wrapper.orderByDesc(ModelUploadEntity::getCreateTime);
         return super.listByPage(param, wrapper);
     }
 
@@ -211,10 +212,14 @@ public class ModelUploadServiceImpl extends BaseServiceImpl<IModelUploadMapper,
                                     paramsMap.put("outFilePath", buildPath + componentModel.getObjPath().replace(".obj", ""));
                                     OkHttpUtils.httpPostForm(maxObjUrl + "toToolbag", paramsMap);
                                     ModelUploadServiceImpl.log.info("上传开始");
-                                    rabbitTemplate.convertAndSend(TopicRabbitConfig.TOPICE, TopicRabbitConfig.MVIEW,
-                                            customComponentEntity.getId() + ":;2:;" + buildPath + componentModel.getObjPath().replace(".obj", ".mview") + ":;" + componentModel.getFileId());
+                                    String messageStr = customComponentEntity.getId() + ":;2:;" + buildPath + componentModel.getObjPath().replace(".obj", ".mview") + ":;" + componentModel.getFileId();
+                                    rabbitTemplate.convertAndSend(TopicRabbitConfig.DELAY_EXCHANGE, TopicRabbitConfig.MVIEW,
+                                            messageStr, message -> {
+                                                // 设置过期时间
+                                                message.getMessageProperties().setDelay(1800000);
+                                                return message;
+                                            });
                                 }
-
                                 List<String> fileList = uploadToOssUtil.fileFolderTo4dTjw("domain/eHome/furniture/ue4data/" + modelUploadEntity.getFileId() + "/" + componentModel.getFileId());
                                 ModelUploadServiceImpl.log.info("上传mtl+jpg 到simpleObj-Mtl开始");
                                 for (String s : fileList) {