diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/WebApiServiceImpl.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/WebApiServiceImpl.java index c10bf613d027344a39d45903d4f74d7a121dc015..121211d142555bfbba5bad0364dae9060be32aa7 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/WebApiServiceImpl.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/WebApiServiceImpl.java @@ -57,7 +57,7 @@ public class WebApiServiceImpl implements WebApiService { for (String domainCode : domainCodes) { domains.add(domainDtoMapper.do2dto(domainDAO.queryByDomainCode(domainCode))); } - return domains; + return domains.stream().filter(x -> x.getIsDelete() == 0).collect(Collectors.toList()); } @Override @@ -66,7 +66,7 @@ public class WebApiServiceImpl implements WebApiService { for (String domainCode : domainCodes) { scenes.add(sceneDtoMapper.do2dto(sceneDAO.queryByDomainCode(domainCode))); } - return scenes; + return scenes.stream().filter(x -> x.getIsDelete() == 0).collect(Collectors.toList()); } @Override @@ -75,7 +75,7 @@ public class WebApiServiceImpl implements WebApiService { for (String domainCode : domainCodes) { metadatas.addAll(metadataDtoMapper.dos2dtos(metadataDAO.queryByDomainCode(domainCode))); } - return metadatas; + return metadatas.stream().filter(x -> x.getIsDelete() == 0).collect(Collectors.toList()); } @Override @@ -84,7 +84,7 @@ public class WebApiServiceImpl implements WebApiService { for (String domainCode : domainCodes) { baseDatas.addAll(baseDataDtoMapper.dos2dtos(baseDataDAO.queryByDomainCode(domainCode))); } - return baseDatas; + return baseDatas.stream().filter(x -> x.getIsDelete() == 0).collect(Collectors.toList()); } @Override @@ -93,7 +93,7 @@ public class WebApiServiceImpl implements WebApiService { for (String domainCode : domainCodes) { dataSources.addAll(dataSourceDtoMapper.dos2dtos(dataSourceDAO.queryByDomainCode(domainCode))); } - return dataSources; + return dataSources.stream().filter(x -> x.getIsDelete() == 0).collect(Collectors.toList()); } @Override @@ -102,11 +102,11 @@ public class WebApiServiceImpl implements WebApiService { for (String domainCode : domainCodes) { strategies.addAll(strategyDtoMapper.dos2dtos(strategyDAO.queryByDomainCode(domainCode))); } - return strategies; + return strategies.stream().filter(x -> x.getIsDelete() == 0).collect(Collectors.toList()); } @Override public Set loadAllDomainCodes() { - return domainDAO.queryAll().stream().map(DomainDO::getDomainCode).collect(Collectors.toSet()); + return domainDAO.queryAll().stream().filter(x -> x.getIsDelete() == 0).map(DomainDO::getDomainCode).collect(Collectors.toSet()); } } diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/RegisterDO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/RegisterDO.java index 19f1f157900f32668acf010f4d2037d25fcd791d..2c3932fa22068fa224e7096bfc989a9785e87df4 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/RegisterDO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/RegisterDO.java @@ -20,7 +20,7 @@ public class RegisterDO extends BaseDO { */ private String appName; /** - * 服务注册事件 + * 服务注册时间 */ private Date registerTime; /** diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/webapi/WebApiController.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/webapi/WebApiController.java index cfcc07ea8293cf970bbe87aa5aa5b7826b737d73..3f84fdf9a2400011e30ba9df045601df6f003f77 100644 --- a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/webapi/WebApiController.java +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/webapi/WebApiController.java @@ -14,6 +14,8 @@ import org.springframework.web.bind.annotation.RestController; import com.google.common.collect.Lists; /** + * TODO 修改获取有效的 + * * @author icanci * @since 1.0 Created in 2022/11/15 21:51 */ diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java index 3a24c4969979c7e732fe68b58b9160d55ceb7764..8154fac81f67bd8824efb1231bf61daa1cacadd4 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/rule/EngineExecutor.java @@ -233,9 +233,6 @@ public final class EngineExecutor { Map parameters = request.getParameters(); SimpleBindings bindings = new SimpleBindings(); - if (parameters != null) { - bindings.putAll(parameters); - } String dataSourceUuid = strategy.getDataSourceUuid(); if (StringUtils.isNotBlank(dataSourceUuid)) { DataSourceDTO dataSource = holder.getDataSource(domain.getDomainCode(), dataSourceUuid); @@ -283,6 +280,10 @@ public final class EngineExecutor { // no op } } + // 传入的参数优先级最高 + if (parameters != null) { + bindings.putAll(parameters); + } return bindings; } diff --git a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/server/RegisterClient.java b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/server/RegisterClient.java index 845082e3df1490d005c5eb73c5be7f5c9e60852b..5da4376208608301550899e4e5bc270613926e29 100644 --- a/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/server/RegisterClient.java +++ b/rec-engine/rec-engine-sdk/src/main/java/cn/icanci/rec/engine/sdk/server/RegisterClient.java @@ -15,9 +15,7 @@ import cn.icanci.rec.engine.sdk.rule.repository.EngineRepositoryHolder; import cn.icanci.rec.engine.sdk.spi.DomainSPI; import java.util.Set; -import java.util.concurrent.LinkedBlockingQueue; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.*; import javax.annotation.Resource; @@ -72,29 +70,26 @@ public class RegisterClient implements InitializingBean { * @param appName 客户端服务名 */ public void register(String serverAddress, int serverPort, int clientPort, String appName) { - try { - String domain = recProperties.getDomain(); - if (recProperties.isLoadAll()) { - Set domainCodes = domainSPI.loadAllDomainCodes(); - domain = String.join(",", domainCodes); - } - String[] addresses = serverAddress.split(","); - for (String address : addresses) { - String finalDomain = domain; - registerPool.execute(() -> { - RegisterDTO registerDTO = new RegisterDTO(IPUtils.getHostIpAddress(), clientPort, appName, finalDomain); - String reqUrl = String.format(REQ_URL_FORMAT, address, serverPort, UriConstant.register); - - Client.RpcRequest rpcRequest = new Client.RpcRequest(registerDTO, DEFAULT_APPLICATION_JSON_VALUE, Maps.newHashMap(), reqUrl, HttpMethod.POST.name(), false, 3, - TimeUnit.SECONDS, 3, SerializerEnum.FASTJSON, SerializerEnum.FASTJSON); - - R call = CLIENT.call(rpcRequest, R.class); - - logger.info("Register result:{}", FastJsonUtils.toJSONString(call)); - }); + String domain = recProperties.getDomain(); + if (recProperties.isLoadAll()) { + Set domainCodes = domainSPI.loadAllDomainCodes(); + domain = String.join(",", domainCodes); + } + String[] addresses = serverAddress.split(","); + + for (String address : addresses) { + try { + FutureTask task = new FutureTask<>(new RegisterCallable(address, clientPort, appName, domain, serverPort)); + registerPool.execute(task); + R r = task.get(10, TimeUnit.SECONDS); + if (r.isOk()) { + break; + } else { + logger.error("Task Register Exception:{}", r.getMessage()); + } + } catch (RemoteException | ExecutionException | InterruptedException | TimeoutException e) { + logger.warn("Register Exception:{}", e.getMessage()); } - } catch (RemoteException e) { - logger.warn("Register RemoteException:{}", e.getMessage()); } } @@ -127,4 +122,37 @@ public class RegisterClient implements InitializingBean { engineRepositoryHolder.refresh(domainCodes); } } + + /** 注册器 */ + private static class RegisterCallable implements Callable { + + private final String address; + private final int clientPort; + private final String appName; + private final String domain; + private final int serverPort; + + public RegisterCallable(String address, int clientPort, String appName, String domain, int serverPort) { + this.address = address; + this.clientPort = clientPort; + this.appName = appName; + this.domain = domain; + this.serverPort = serverPort; + } + + @Override + public R call() throws Exception { + RegisterDTO registerDTO = new RegisterDTO(IPUtils.getHostIpAddress(), clientPort, appName, domain); + String reqUrl = String.format(REQ_URL_FORMAT, address, serverPort, UriConstant.register); + + Client.RpcRequest rpcRequest = new Client.RpcRequest(registerDTO, DEFAULT_APPLICATION_JSON_VALUE, Maps.newHashMap(), reqUrl, HttpMethod.POST.name(), false, 3, + TimeUnit.SECONDS, 3, SerializerEnum.FASTJSON, SerializerEnum.FASTJSON); + + R call = CLIENT.call(rpcRequest, R.class); + + logger.info("Register result:{}", FastJsonUtils.toJSONString(call)); + + return call; + } + } }