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