parent
4123482732
commit
0026391c7c
@ -0,0 +1,79 @@
|
|||||||
|
package com.soa.bus;
|
||||||
|
|
||||||
|
import com.soa.service.Service;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 服务总线 - 负责服务的注册、发现和路由
|
||||||
|
*/
|
||||||
|
public class ServiceBus {
|
||||||
|
private static final Logger logger = LogManager.getLogger(ServiceBus.class);
|
||||||
|
private static ServiceBus instance;
|
||||||
|
private final Map<String, Service> serviceRegistry = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
|
private ServiceBus() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取服务总线单例
|
||||||
|
*/
|
||||||
|
public static synchronized ServiceBus getInstance() {
|
||||||
|
if (instance == null) {
|
||||||
|
instance = new ServiceBus();
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 注册服务
|
||||||
|
*/
|
||||||
|
public void registerService(Service service) {
|
||||||
|
String serviceName = service.getName();
|
||||||
|
serviceRegistry.put(serviceName, service);
|
||||||
|
logger.info("Service registered: {}", serviceName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 注销服务
|
||||||
|
*/
|
||||||
|
public void unregisterService(String serviceName) {
|
||||||
|
serviceRegistry.remove(serviceName);
|
||||||
|
logger.info("Service unregistered: {}", serviceName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调用服务
|
||||||
|
*/
|
||||||
|
public String callService(String serviceName, String request) {
|
||||||
|
Service service = serviceRegistry.get(serviceName);
|
||||||
|
if (service == null) {
|
||||||
|
logger.error("Service not found: {}", serviceName);
|
||||||
|
return "Error: Service not found - " + serviceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!service.isAvailable()) {
|
||||||
|
logger.error("Service not available: {}", serviceName);
|
||||||
|
return "Error: Service not available - " + serviceName;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.info("Routing request to service: {}", serviceName);
|
||||||
|
return service.execute(request);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查服务是否可用
|
||||||
|
*/
|
||||||
|
public boolean isServiceAvailable(String serviceName) {
|
||||||
|
Service service = serviceRegistry.get(serviceName);
|
||||||
|
return service != null && service.isAvailable();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取已注册的服务数量
|
||||||
|
*/
|
||||||
|
public int getRegisteredServiceCount() {
|
||||||
|
return serviceRegistry.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in new issue