|
@@ -7,13 +7,16 @@ import com.fdkankan.common.constant.ModelingBuildStatus;
|
|
import com.fdkankan.common.util.FileUtils;
|
|
import com.fdkankan.common.util.FileUtils;
|
|
import com.fdkankan.model.utils.ComputerUtil;
|
|
import com.fdkankan.model.utils.ComputerUtil;
|
|
import com.fdkankan.modeling.bean.BuildSceneResultBean;
|
|
import com.fdkankan.modeling.bean.BuildSceneResultBean;
|
|
|
|
+import com.fdkankan.modeling.constants.RedisKey;
|
|
import com.fdkankan.modeling.constants.SysConstants;
|
|
import com.fdkankan.modeling.constants.SysConstants;
|
|
import com.fdkankan.modeling.entity.BuildLog;
|
|
import com.fdkankan.modeling.entity.BuildLog;
|
|
import com.fdkankan.modeling.exception.BuildException;
|
|
import com.fdkankan.modeling.exception.BuildException;
|
|
import com.fdkankan.modeling.handler.LaserSceneObjGenerateHandler;
|
|
import com.fdkankan.modeling.handler.LaserSceneObjGenerateHandler;
|
|
import com.fdkankan.modeling.service.IBuildLogService;
|
|
import com.fdkankan.modeling.service.IBuildLogService;
|
|
import com.fdkankan.modeling.service.IBuildService;
|
|
import com.fdkankan.modeling.service.IBuildService;
|
|
|
|
+import com.fdkankan.modeling.service.IMqEcsService;
|
|
import com.fdkankan.modeling.service.ISceneBuildProcessLogService;
|
|
import com.fdkankan.modeling.service.ISceneBuildProcessLogService;
|
|
|
|
+import com.fdkankan.modeling.service.impl.MqEcsServiceImpl;
|
|
import com.fdkankan.rabbitmq.bean.BuildSceneCallMessage;
|
|
import com.fdkankan.rabbitmq.bean.BuildSceneCallMessage;
|
|
import com.fdkankan.rabbitmq.bean.BuildSceneProcessLogMessage;
|
|
import com.fdkankan.rabbitmq.bean.BuildSceneProcessLogMessage;
|
|
import com.fdkankan.rabbitmq.bean.BuildSceneResultMqMessage;
|
|
import com.fdkankan.rabbitmq.bean.BuildSceneResultMqMessage;
|
|
@@ -78,6 +81,8 @@ public class RabbitMqListener {
|
|
private LaserSceneObjGenerateHandler laserSceneObjGenerateHandler;
|
|
private LaserSceneObjGenerateHandler laserSceneObjGenerateHandler;
|
|
@Autowired
|
|
@Autowired
|
|
private ISceneBuildProcessLogService sceneBuildProcessLogService;
|
|
private ISceneBuildProcessLogService sceneBuildProcessLogService;
|
|
|
|
+ @Autowired
|
|
|
|
+ QueueNameService queueNameService;
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
private IBuildService buildService;
|
|
private IBuildService buildService;
|
|
@@ -89,34 +94,38 @@ public class RabbitMqListener {
|
|
* @throws Exception
|
|
* @throws Exception
|
|
*/
|
|
*/
|
|
@RabbitListener(
|
|
@RabbitListener(
|
|
- queuesToDeclare = @Queue("${queue.modeling.modeling-call}"),
|
|
|
|
|
|
+ //queuesToDeclare = @Queue("${queue.modeling.modeling-call}"),
|
|
|
|
+ queuesToDeclare = @Queue("#{queueNameService.getQueueName()}"),
|
|
concurrency = "${maxThread.modeling.modeling-call}",
|
|
concurrency = "${maxThread.modeling.modeling-call}",
|
|
priority = "${mq.consumerPriority}"
|
|
priority = "${mq.consumerPriority}"
|
|
)
|
|
)
|
|
public void buildSceneHandler(Channel channel, Message message) throws Exception {
|
|
public void buildSceneHandler(Channel channel, Message message) throws Exception {
|
|
- SysConstants.SYSTEM_BUILDING = true;
|
|
|
|
- long deliveryTag = message.getMessageProperties().getDeliveryTag();
|
|
|
|
- if (SysConstants.SYSTEM_OFFING) {
|
|
|
|
- SysConstants.SYSTEM_BUILDING = false;
|
|
|
|
- channel.basicNack(deliveryTag, true, true);
|
|
|
|
- log.error("服务实例:{} 正在关闭,退出构建!", SysConstants.hostName);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if (ObjectUtils.isEmpty(message.getBody())) {
|
|
if (ObjectUtils.isEmpty(message.getBody())) {
|
|
- SysConstants.SYSTEM_BUILDING = false;
|
|
|
|
log.error("消息内容为空,退出构建,当前服务器id:{}", SysConstants.hostName);
|
|
log.error("消息内容为空,退出构建,当前服务器id:{}", SysConstants.hostName);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+ long deliveryTag = message.getMessageProperties().getDeliveryTag();
|
|
String msg = new String(message.getBody(), StandardCharsets.UTF_8);
|
|
String msg = new String(message.getBody(), StandardCharsets.UTF_8);
|
|
BuildSceneCallMessage buildSceneMessage = JSONObject.parseObject(msg, BuildSceneCallMessage.class);
|
|
BuildSceneCallMessage buildSceneMessage = JSONObject.parseObject(msg, BuildSceneCallMessage.class);
|
|
-
|
|
|
|
String messageId = message.getMessageProperties().getMessageId();
|
|
String messageId = message.getMessageProperties().getMessageId();
|
|
if(Objects.isNull(buildSceneMessage) || StrUtil.isBlank(buildSceneMessage.getSceneNum())){
|
|
if(Objects.isNull(buildSceneMessage) || StrUtil.isBlank(buildSceneMessage.getSceneNum())){
|
|
log.error("消息内容错误,id:{},消息体:{}", messageId, msg);
|
|
log.error("消息内容错误,id:{},消息体:{}", messageId, msg);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //计算暂停锁,计算中锁。弹性伸缩控制服务使用
|
|
|
|
+ String modelingKey = String.format(RedisKey.modelingKey,SysConstants.hostName);
|
|
|
|
+ String stopKey = String.format(RedisKey.ecsStopKey,SysConstants.hostName);
|
|
|
|
+ //设置为计算超时时间过期
|
|
|
|
+ redisUtil.set(modelingKey,msg,SysConstants.modelTimeOut * 3600L);
|
|
|
|
+
|
|
|
|
+ if(redisUtil.hasKey(stopKey)){
|
|
|
|
+ log.error("服务实例:{} 正在关闭,退出构建!", SysConstants.hostName);
|
|
|
|
+ redisUtil.del(modelingKey);
|
|
|
|
+ channel.basicNack(deliveryTag, true, true);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
BuildLog buildLog = new BuildLog();
|
|
BuildLog buildLog = new BuildLog();
|
|
log.info("场景计算开始,队列名:{},id:{},deliveryTag:{},消息体:{}", queueModelingCall, messageId,deliveryTag,msg);
|
|
log.info("场景计算开始,队列名:{},id:{},deliveryTag:{},消息体:{}", queueModelingCall, messageId,deliveryTag,msg);
|
|
buildLog.setMessageId(messageId);
|
|
buildLog.setMessageId(messageId);
|
|
@@ -126,7 +135,7 @@ public class RabbitMqListener {
|
|
log.info("场景计算结束,队列名:{},id:{}", queueModelingCall, messageId);
|
|
log.info("场景计算结束,队列名:{},id:{}", queueModelingCall, messageId);
|
|
|
|
|
|
//计算完毕,将当前系统构建状态改为false
|
|
//计算完毕,将当前系统构建状态改为false
|
|
- SysConstants.SYSTEM_BUILDING = false;
|
|
|
|
|
|
+ redisUtil.del(modelingKey);
|
|
|
|
|
|
channel.basicAck(deliveryTag, false);
|
|
channel.basicAck(deliveryTag, false);
|
|
}
|
|
}
|
|
@@ -291,7 +300,7 @@ public class RabbitMqListener {
|
|
*/
|
|
*/
|
|
private void sendCallBuildProcessLog(BuildSceneCallMessage message, ModelingBuildStatus buildStatus){
|
|
private void sendCallBuildProcessLog(BuildSceneCallMessage message, ModelingBuildStatus buildStatus){
|
|
rabbitMqProducer.sendByWorkQueue(queueModelingProcessLog,
|
|
rabbitMqProducer.sendByWorkQueue(queueModelingProcessLog,
|
|
- BuildSceneProcessLogMessage.builder().num(message.getSceneNum()).buildStatus(buildStatus.code()).build());
|
|
|
|
|
|
+ BuildSceneProcessLogMessage.builder().num(message.getSceneNum()).buildStatus(buildStatus.code()).queueName(queueNameService.getQueueName()).build());
|
|
}
|
|
}
|
|
|
|
|
|
private void preBuild(Map<String,Object> buildContext,BuildSceneCallMessage message, BuildLog buildLog) throws BuildException {
|
|
private void preBuild(Map<String,Object> buildContext,BuildSceneCallMessage message, BuildLog buildLog) throws BuildException {
|