use of com.alipay.sofa.rpc.config.ApplicationConfig in project sofa-boot by alipay.
the class ConsumerConfigHelper method getConsumerConfig.
/**
* 获取 ConsumerConfig
*
* @param contract the Contract
* @param binding the RpcBinding
* @return the ConsumerConfig
*/
public ConsumerConfig getConsumerConfig(Contract contract, RpcBinding binding) {
RpcBindingParam param = binding.getRpcBindingParam();
String id = binding.getBeanId();
String interfaceId = contract.getInterfaceType().getName();
String uniqueId = contract.getUniqueId();
Integer timeout = param.getTimeout();
Integer retries = param.getRetries();
String type = param.getType();
Integer addressWaitTime = param.getAddressWaitTime();
Object callbackHandler = param.getCallbackHandler();
String genericInterface = param.getGenericInterface();
String loadBalancer = param.getLoadBalancer();
Boolean lazy = param.getLazy();
Boolean check = param.getCheck();
String mockMode = param.getMockMode();
String serialization = param.getSerialization();
List<Filter> filters = param.getFilters();
List<MethodConfig> methodConfigs = convertToMethodConfig(param.getMethodInfos());
String targetUrl = param.getTargetUrl();
String referenceLimit = sofaBootRpcProperties.getConsumerRepeatedReferenceLimit();
ConsumerConfig consumerConfig = new ConsumerConfig();
if (StringUtils.hasText(appName)) {
consumerConfig.setApplication(new ApplicationConfig().setAppName(appName));
}
if (StringUtils.hasText(id)) {
consumerConfig.setId(id);
}
if (StringUtils.hasText(genericInterface)) {
consumerConfig.setGeneric(true);
consumerConfig.setInterfaceId(genericInterface);
} else if (StringUtils.hasText(interfaceId)) {
consumerConfig.setInterfaceId(interfaceId);
}
if (StringUtils.hasText(uniqueId)) {
consumerConfig.setUniqueId(uniqueId);
}
if (timeout != null) {
consumerConfig.setTimeout(timeout);
}
if (retries != null) {
consumerConfig.setRetries(retries);
}
if (StringUtils.hasText(type)) {
consumerConfig.setInvokeType(type);
}
if (addressWaitTime != null) {
consumerConfig.setAddressWait(addressWaitTime);
}
if (StringUtils.hasText(loadBalancer)) {
consumerConfig.setLoadBalancer(loadBalancer);
}
if (lazy != null) {
consumerConfig.setLazy(lazy);
}
if (check != null) {
consumerConfig.setCheck(check);
}
if (mockMode != null) {
consumerConfig.setMockMode(mockMode);
}
if (callbackHandler != null) {
if (callbackHandler instanceof SofaResponseCallback) {
consumerConfig.setOnReturn((SofaResponseCallback) callbackHandler);
} else {
throw new SofaBootRpcRuntimeException("callback handler must implement SofaResponseCallback [" + callbackHandler + "]");
}
}
if (!CollectionUtils.isEmpty(filters)) {
consumerConfig.setFilterRef(filters);
}
if (!CollectionUtils.isEmpty(methodConfigs)) {
consumerConfig.setMethods(methodConfigs);
}
if (StringUtils.hasText(targetUrl)) {
consumerConfig.setDirectUrl(targetUrl);
consumerConfig.setLazy(true);
consumerConfig.setSubscribe(false);
consumerConfig.setRegister(false);
}
if (StringUtils.hasText(referenceLimit)) {
consumerConfig.setRepeatedReferLimit(Integer.valueOf(referenceLimit));
}
String protocol = binding.getBindingType().getType();
consumerConfig.setBootstrap(protocol);
if (protocol.equals(SofaBootRpcConfigConstants.RPC_PROTOCOL_DUBBO)) {
consumerConfig.setInJVM(false);
}
if (param.getRegistrys() != null && param.getRegistrys().size() > 0) {
List<String> registrys = param.getRegistrys();
for (String registryAlias : registrys) {
RegistryConfig registryConfig = registryConfigContainer.getRegistryConfig(registryAlias);
consumerConfig.setRegistry(registryConfig);
}
} else if (registryConfigContainer.isMeshEnabled(protocol)) {
RegistryConfig registryConfig = registryConfigContainer.getRegistryConfig(SofaBootRpcConfigConstants.REGISTRY_PROTOCOL_MESH);
consumerConfig.setRegistry(registryConfig);
} else {
RegistryConfig registryConfig = registryConfigContainer.getRegistryConfig();
consumerConfig.setRegistry(registryConfig);
}
if (StringUtils.hasText(serialization)) {
consumerConfig.setSerialization(serialization);
}
if (Boolean.TRUE.toString().equals(sofaBootRpcProperties.getHystrixEnable())) {
consumerConfig.setParameter(HystrixConstants.SOFA_HYSTRIX_ENABLED, Boolean.TRUE.toString());
}
// after sofaBootRpcProperties#getHystrixEnable for override global config
if (param.getParameters() != null) {
consumerConfig.setParameters(param.getParameters());
}
return consumerConfig.setProtocol(protocol);
}
use of com.alipay.sofa.rpc.config.ApplicationConfig in project sofa-boot by alipay.
the class ProviderConfigHelper method getProviderConfig.
/**
* 获取 ProviderConfig
*
* @param contract the Contract
* @param binding the RpcBinding
* @param target 服务实例
* @return the ProviderConfig
* @throws SofaBootRpcRuntimeException
*/
public ProviderConfig getProviderConfig(Contract contract, RpcBinding binding, Object target) throws SofaBootRpcRuntimeException {
RpcBindingParam param = binding.getRpcBindingParam();
String id = binding.getBeanId();
String interfaceId = contract.getInterfaceType().getName();
Object ref = target;
String uniqueId = contract.getUniqueId();
Integer timeout = param.getTimeout();
Integer weight = param.getWeight();
Integer warmupTime = param.getWarmUpTime();
Integer warmupWeight = param.getWarmUpWeight();
UserThreadPool threadPool = param.getUserThreadPool();
String serialization = param.getSerialization();
List<Filter> filters = param.getFilters();
List<MethodConfig> methodConfigs = convertToMethodConfig(param.getMethodInfos());
ServerConfig serverConfig = serverConfigContainer.getServerConfig(binding.getBindingType().getType());
ProviderConfig providerConfig = new ProviderConfig();
if (StringUtils.hasText(appName)) {
providerConfig.setApplication(new ApplicationConfig().setAppName(appName));
}
if (StringUtils.hasText(id)) {
providerConfig.setId(id);
}
if (StringUtils.hasText(interfaceId)) {
providerConfig.setInterfaceId(interfaceId);
}
if (contract.getInterfaceType() != null) {
providerConfig.setProxyClass(contract.getInterfaceType());
}
if (ref != null) {
providerConfig.setRef(ref);
}
if (StringUtils.hasText(uniqueId)) {
providerConfig.setUniqueId(uniqueId);
}
if (timeout != null) {
providerConfig.setTimeout(timeout);
}
if (weight != null) {
providerConfig.setWeight(weight);
}
if (warmupTime != null) {
providerConfig.setParameter(ProviderInfoAttrs.ATTR_WARMUP_TIME, String.valueOf(warmupTime));
}
if (warmupWeight != null) {
providerConfig.setParameter(ProviderInfoAttrs.ATTR_WARMUP_WEIGHT, String.valueOf(warmupWeight));
}
if (!CollectionUtils.isEmpty(filters)) {
providerConfig.setFilterRef(filters);
}
if (!CollectionUtils.isEmpty(methodConfigs)) {
providerConfig.setMethods(methodConfigs);
}
if (threadPool != null) {
UserThreadPoolManager.registerUserThread(ConfigUniqueNameGenerator.getUniqueName(providerConfig), threadPool);
}
providerConfig.setServer(serverConfig);
String protocol = binding.getBindingType().getType();
// http protocol use default protocol
if (!SofaBootRpcConfigConstants.RPC_PROTOCOL_HTTP.equals(protocol)) {
providerConfig.setBootstrap(protocol);
}
if (StringUtils.hasText(serialization)) {
providerConfig.setSerialization(serialization);
}
if (param.getParameters() != null) {
providerConfig.setParameters(param.getParameters());
}
if (param.getRegistrys() != null && param.getRegistrys().size() > 0) {
List<String> registrys = param.getRegistrys();
for (String registryAlias : registrys) {
RegistryConfig registryConfig = registryConfigContainer.getRegistryConfig(registryAlias);
providerConfig.setRegistry(registryConfig);
}
} else if (registryConfigContainer.isMeshEnabled(protocol)) {
RegistryConfig registryConfig = registryConfigContainer.getRegistryConfig(SofaBootRpcConfigConstants.REGISTRY_PROTOCOL_MESH);
providerConfig.setRegistry(registryConfig);
} else {
RegistryConfig registryConfig = registryConfigContainer.getRegistryConfig();
providerConfig.setRegistry(registryConfig);
}
providerConfig.setRegister(false);
return providerConfig;
}
use of com.alipay.sofa.rpc.config.ApplicationConfig in project incubator-shenyu by apache.
the class ApplicationConfigCache method init.
/**
* Init.
*
* @param sofaRegisterConfig the sofa register config
*/
public void init(final SofaRegisterConfig sofaRegisterConfig) {
final String shenyuProxy = "shenyu_proxy";
if (applicationConfig == null) {
applicationConfig = new ApplicationConfig();
applicationConfig.setAppId(shenyuProxy);
applicationConfig.setAppName(shenyuProxy);
}
if (registryConfig == null) {
registryConfig = new RegistryConfig();
registryConfig.setProtocol(sofaRegisterConfig.getProtocol());
registryConfig.setId(shenyuProxy);
registryConfig.setRegister(false);
registryConfig.setAddress(sofaRegisterConfig.getRegister());
}
}
use of com.alipay.sofa.rpc.config.ApplicationConfig in project sofa-rpc by sofastack.
the class DubboProviderBootstrap method copyApplication.
private void copyApplication(ProviderConfig<T> providerConfig, ServiceConfig<T> serviceConfig) {
ApplicationConfig applicationConfig = providerConfig.getApplication();
com.alibaba.dubbo.config.ApplicationConfig dubboConfig = new com.alibaba.dubbo.config.ApplicationConfig();
dubboConfig.setName(applicationConfig.getAppName());
serviceConfig.setApplication(dubboConfig);
}
use of com.alipay.sofa.rpc.config.ApplicationConfig in project sofa-rpc by sofastack.
the class DubooServerTest method testWithParameterWithVersion.
@Test
public // 同步调用,直连,dubbo 服务指定版本version
void testWithParameterWithVersion() {
try {
// 只有1个线程 执行
ServerConfig serverConfig = new ServerConfig().setStopTimeout(60000).setPort(20880).setProtocol("dubbo").setQueues(100).setCoreThreads(1).setMaxThreads(2);
// 发布一个服务,每个请求要执行1秒
ApplicationConfig serverApplacation = new ApplicationConfig();
serverApplacation.setAppName("server");
providerConfig = new ProviderConfig<DemoService>().setInterfaceId(DemoService.class.getName()).setRef(new DemoServiceImpl()).setBootstrap("dubbo").setServer(serverConfig).setParameter("version", "1.0.1").setRegister(false).setApplication(serverApplacation);
providerConfig.export();
ApplicationConfig clientApplication = new ApplicationConfig();
clientApplication.setAppName("client");
consumerConfig = new ConsumerConfig<DemoService>().setInterfaceId(DemoService.class.getName()).setDirectUrl("dubbo://127.0.0.1:20880").setBootstrap("dubbo").setTimeout(30000).setParameter("version", "1.0.1").setRegister(false).setProtocol("dubbo").setApplication(clientApplication);
final DemoService demoService = consumerConfig.refer();
String result = demoService.sayHello("xxx");
Assert.assertTrue(result.equalsIgnoreCase("hello xxx"));
} catch (Exception e) {
e.printStackTrace();
Assert.assertTrue(false);
}
}
Aggregations