|
@@ -1,8 +1,12 @@
|
|
package com.fdkankan.contro.mq.listener;
|
|
package com.fdkankan.contro.mq.listener;
|
|
|
|
|
|
|
|
+import cn.hutool.core.exceptions.ExceptionUtil;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.fdkankan.common.constant.CommonOperStatus;
|
|
import com.fdkankan.contro.constant.RedisConstants;
|
|
import com.fdkankan.contro.constant.RedisConstants;
|
|
import com.fdkankan.contro.mq.service.IBuildSceneService;
|
|
import com.fdkankan.contro.mq.service.IBuildSceneService;
|
|
|
|
+import com.fdkankan.contro.service.ISceneBuildProcessLogService;
|
|
|
|
+import com.fdkankan.model.constants.SceneBuildProcessType;
|
|
import com.fdkankan.rabbitmq.bean.BuildSceneCallMessage;
|
|
import com.fdkankan.rabbitmq.bean.BuildSceneCallMessage;
|
|
import com.fdkankan.rabbitmq.bean.BuildSceneResultMqMessage;
|
|
import com.fdkankan.rabbitmq.bean.BuildSceneResultMqMessage;
|
|
import com.fdkankan.redis.util.RedisLockUtil;
|
|
import com.fdkankan.redis.util.RedisLockUtil;
|
|
@@ -21,6 +25,8 @@ public class AbstrackBuildSceneListener implements IBuildSceneListener {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private RedisLockUtil redisLockUtil;
|
|
private RedisLockUtil redisLockUtil;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ISceneBuildProcessLogService sceneBuildProcessLogService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void preHandle(Channel channel, String queueName, Message message, IBuildSceneService buildSceneService) throws IOException {
|
|
public void preHandle(Channel channel, String queueName, Message message, IBuildSceneService buildSceneService) throws IOException {
|
|
@@ -39,13 +45,23 @@ public class AbstrackBuildSceneListener implements IBuildSceneListener {
|
|
String msg = new String(message.getBody(), StandardCharsets.UTF_8);
|
|
String msg = new String(message.getBody(), StandardCharsets.UTF_8);
|
|
log.info("开始准备场景计算资源,队列名:{},id:{},消息体:{}", queueName, messageId, msg);
|
|
log.info("开始准备场景计算资源,队列名:{},id:{},消息体:{}", queueName, messageId, msg);
|
|
BuildSceneCallMessage buildSceneMessage = JSONObject.parseObject(msg, BuildSceneCallMessage.class);
|
|
BuildSceneCallMessage buildSceneMessage = JSONObject.parseObject(msg, BuildSceneCallMessage.class);
|
|
- if(ObjectUtils.isEmpty(buildSceneMessage.getBuildContext())){
|
|
|
|
- buildSceneMessage.setBuildContext(new HashMap<>());
|
|
|
|
- }
|
|
|
|
- if(!ObjectUtils.isEmpty(buildSceneMessage.getSceneNum())){
|
|
|
|
- buildSceneMessage.getBuildContext().put("sceneNum",buildSceneMessage.getSceneNum());
|
|
|
|
|
|
+ String num = buildSceneMessage.getSceneNum();
|
|
|
|
+ try {
|
|
|
|
+ if(ObjectUtils.isEmpty(buildSceneMessage.getBuildContext())){
|
|
|
|
+ buildSceneMessage.setBuildContext(new HashMap<>());
|
|
|
|
+ }
|
|
|
|
+ if(!ObjectUtils.isEmpty(buildSceneMessage.getSceneNum())){
|
|
|
|
+ buildSceneMessage.getBuildContext().put("sceneNum",buildSceneMessage.getSceneNum());
|
|
|
|
+ }
|
|
|
|
+ //记录日志
|
|
|
|
+ sceneBuildProcessLogService.clearSceneBuildProcessLog(num, SceneBuildProcessType.PRE.code(), queueName);
|
|
|
|
+ sceneBuildProcessLogService.saveSceneBuildProcessLog(num, SceneBuildProcessType.PRE.code(), queueName, CommonOperStatus.WAITING.code(), null);
|
|
|
|
+ buildSceneService.buildScenePre(buildSceneMessage);
|
|
|
|
+ sceneBuildProcessLogService.saveSceneBuildProcessLog(num, SceneBuildProcessType.PRE.code(), queueName, CommonOperStatus.SUCCESS.code(), null);
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ log.error("场景计算前置处理出错,num=" + num, e);
|
|
|
|
+ sceneBuildProcessLogService.saveSceneBuildProcessLog(num, SceneBuildProcessType.PRE.code(), queueName, CommonOperStatus.FAILD.code(), ExceptionUtil.stacktraceToString(e, 3000));
|
|
}
|
|
}
|
|
- buildSceneService.buildScenePre(buildSceneMessage);
|
|
|
|
log.info("准备场景计算资源完成,队列名:{},id:{},消息体:{}", queueName, messageId, msg);
|
|
log.info("准备场景计算资源完成,队列名:{},id:{},消息体:{}", queueName, messageId, msg);
|
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
|
}
|
|
}
|
|
@@ -67,7 +83,16 @@ public class AbstrackBuildSceneListener implements IBuildSceneListener {
|
|
String msg = new String(message.getBody(), StandardCharsets.UTF_8);
|
|
String msg = new String(message.getBody(), StandardCharsets.UTF_8);
|
|
log.info("场景计算完成,开始处理场景计算结果,队列名:{},id:{},消息体:{}", queueName, messageId, msg);
|
|
log.info("场景计算完成,开始处理场景计算结果,队列名:{},id:{},消息体:{}", queueName, messageId, msg);
|
|
BuildSceneResultMqMessage buildSceneMessage = JSONObject.parseObject(msg, BuildSceneResultMqMessage.class);
|
|
BuildSceneResultMqMessage buildSceneMessage = JSONObject.parseObject(msg, BuildSceneResultMqMessage.class);
|
|
- buildSceneService.buildScenePost(buildSceneMessage);
|
|
|
|
|
|
+ String num = buildSceneMessage.getBuildContext().get("sceneNum").toString();
|
|
|
|
+ try {
|
|
|
|
+ sceneBuildProcessLogService.clearSceneBuildProcessLog(num, SceneBuildProcessType.POST.code(), queueName);
|
|
|
|
+ sceneBuildProcessLogService.saveSceneBuildProcessLog(num, SceneBuildProcessType.POST.code(), queueName, CommonOperStatus.WAITING.code(), null);
|
|
|
|
+ buildSceneService.buildScenePost(buildSceneMessage);
|
|
|
|
+ sceneBuildProcessLogService.saveSceneBuildProcessLog(num, SceneBuildProcessType.POST.code(), queueName, CommonOperStatus.SUCCESS.code(), null);
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ log.error("场景计算结果处理出错,num=" + num, e);
|
|
|
|
+ sceneBuildProcessLogService.saveSceneBuildProcessLog(num, SceneBuildProcessType.POST.code(), queueName, CommonOperStatus.FAILD.code(), ExceptionUtil.stacktraceToString(e, 3000));
|
|
|
|
+ }
|
|
log.info("场景计算结果处理完成,队列名:{},id:{},消息体:{}", queueName, messageId, msg);
|
|
log.info("场景计算结果处理完成,队列名:{},id:{},消息体:{}", queueName, messageId, msg);
|
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
|
}
|
|
}
|