1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
@Service public class ServiceManagementService { @Autowired private NamingService namingService; @Autowired private NacosProperties nacosProperties;
public void registerServiceInstance(String serviceName, String ip, int port) { try { Instance instance = new Instance(); instance.setIp(ip); instance.setPort(port); instance.setWeight(nacosProperties.getDiscovery().getWeight()); instance.setEphemeral(nacosProperties.getDiscovery().isEphemeral()); Map<String, String> metadata = new HashMap<>(); metadata.put("environment", nacosProperties.getEnvironment()); metadata.put("version", "1.0.0"); metadata.put("startup.time", String.valueOf(System.currentTimeMillis())); instance.setMetadata(metadata); namingService.registerInstance( serviceName, nacosProperties.getGroup(), instance ); log.info("服务实例注册成功: serviceName={}, ip={}, port={}", serviceName, ip, port); } catch (NacosException e) { log.error("服务实例注册失败: serviceName={}, ip={}, port={}", serviceName, ip, port, e); throw new RuntimeException("服务注册失败", e); } }
public void deregisterServiceInstance(String serviceName, String ip, int port) { try { namingService.deregisterInstance( serviceName, nacosProperties.getGroup(), ip, port ); log.info("服务实例注销成功: serviceName={}, ip={}, port={}", serviceName, ip, port); } catch (NacosException e) { log.error("服务实例注销失败: serviceName={}, ip={}, port={}", serviceName, ip, port, e); throw new RuntimeException("服务注销失败", e); } }
public List<Instance> getServiceInstances(String serviceName) { try { return namingService.getAllInstances( serviceName, nacosProperties.getGroup() ); } catch (NacosException e) { log.error("获取服务实例列表失败: serviceName={}", serviceName, e); return Collections.emptyList(); } }
public List<Instance> getHealthyServiceInstances(String serviceName) { try { return namingService.selectInstances( serviceName, nacosProperties.getGroup(), true ); } catch (NacosException e) { log.error("获取健康服务实例列表失败: serviceName={}", serviceName, e); return Collections.emptyList(); } }
public Instance getServiceInstance(String serviceName) { try { return namingService.selectOneHealthyInstance( serviceName, nacosProperties.getGroup() ); } catch (NacosException e) { log.error("获取服务实例失败: serviceName={}", serviceName, e); return null; } }
public void subscribeService(String serviceName, EventListener listener) { try { namingService.subscribe( serviceName, nacosProperties.getGroup(), listener ); log.info("订阅服务成功: serviceName={}", serviceName); } catch (NacosException e) { log.error("订阅服务失败: serviceName={}", serviceName, e); } }
public void unsubscribeService(String serviceName, EventListener listener) { try { namingService.unsubscribe( serviceName, nacosProperties.getGroup(), listener ); log.info("取消订阅服务成功: serviceName={}", serviceName); } catch (NacosException e) { log.error("取消订阅服务失败: serviceName={}", serviceName, e); } } }
|