SysConstants.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package com.fdkankan.modeling.constants;
  2. import com.fdkankan.common.util.FileUtils;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import org.springframework.beans.BeansException;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.context.ApplicationContext;
  8. import org.springframework.context.ApplicationContextAware;
  9. import org.springframework.core.env.MapPropertySource;
  10. import org.springframework.core.env.StandardEnvironment;
  11. import org.springframework.stereotype.Component;
  12. import org.springframework.util.CollectionUtils;
  13. import org.springframework.util.ObjectUtils;
  14. import java.util.*;
  15. import java.util.concurrent.ExecutorService;
  16. import java.util.concurrent.Executors;
  17. @Component
  18. public class SysConstants implements ApplicationContextAware {
  19. private static final Logger log = LoggerFactory.getLogger(SysConstants.class);
  20. public static String hostName;
  21. public static int modelTimeOut;
  22. public static boolean isResidenceService = true;
  23. public static volatile Boolean SYSTEM_BUILDING = false;
  24. public static volatile Boolean SYSTEM_OFFING = false;
  25. private List<String> residenceServices = null;
  26. public static final String SYSTEM_PREFIX = "model-center";
  27. public static final String SCENE_BUILDING = SYSTEM_PREFIX+":scene:building:num:";
  28. public static final String SCENE_MESSAGE_BUILDING = SYSTEM_PREFIX+":scene:building:message:";
  29. public static ExecutorService executorService = Executors.newFixedThreadPool(1);
  30. public static Set<String> callingNum = new HashSet<>();
  31. public static Set<String> interrupCallingNums = new HashSet<>();
  32. @Value("${hostName.filePath:/opt/hosts/hosts.txt}")
  33. public void setHostName(String filePath){
  34. try {
  35. SysConstants.hostName = FileUtils.readFile(filePath);
  36. // 去除空格
  37. if(!ObjectUtils.isEmpty(SysConstants.hostName)){
  38. SysConstants.hostName = SysConstants.hostName.trim().replaceAll("\\s","");
  39. }
  40. log.error("从文件({})中获取服务器名称:{}", filePath,hostName);
  41. initIsResidenceService();
  42. } catch (Exception e) {
  43. log.error("从文件中获取服务器名称失败,文件路径{}", filePath);
  44. e.printStackTrace();
  45. }
  46. }
  47. /**
  48. * 默认超时时间2天
  49. * @param timeOut
  50. */
  51. @Value("${model.timeOut:48}")
  52. public void setModelTimeOut(int timeOut){
  53. SysConstants.modelTimeOut = timeOut;
  54. }
  55. /**
  56. * 常驻服务实例ID集合
  57. */
  58. @Value("${residenceService.hostNames:#{null}}")
  59. public void setResidenceServiceHostName(String[] hostNames){
  60. if (!ObjectUtils.isEmpty(hostNames)) {
  61. residenceServices = Arrays.asList(hostNames);
  62. initIsResidenceService();
  63. }
  64. }
  65. private void initIsResidenceService() {
  66. if(CollectionUtils.isEmpty(residenceServices) || ObjectUtils.isEmpty(SysConstants.hostName)){
  67. log.error("判断常驻服务失败!");
  68. return;
  69. }
  70. log.info("常驻服务列表:{}", residenceServices);
  71. log.info("当前服务名称:{}", SysConstants.hostName);
  72. isResidenceService = residenceServices.contains(hostName);
  73. log.info("当前服务是否是常驻服务:{}", isResidenceService);
  74. }
  75. @Override
  76. public void setApplicationContext(ApplicationContext context) throws BeansException {
  77. Map<String,Object> params = new HashMap<>();
  78. if (isResidenceService) {
  79. params.put("mq.consumerPriority",1);
  80. } else {
  81. params.put("mq.consumerPriority",0);
  82. }
  83. ((StandardEnvironment)context.getEnvironment()).getPropertySources()
  84. .addLast(new MapPropertySource("mq.consumerPriority",params));
  85. }
  86. }