diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoCloudController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoCloudController.java index f1909a8..fee0cc9 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoCloudController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoCloudController.java @@ -1,127 +1,127 @@ -//package cn.estsh.i3plus.core.apiservice.controller; -// -//import cn.estsh.i3plus.icloud.core.sdk.ICoreDemoCloud; -//import cn.estsh.i3plus.icloud.wms.sdk.IWmsDemoCloud; -//import cn.estsh.i3plus.pojo.base.bean.BaseBean; -//import cn.estsh.i3plus.pojo.base.bean.BaseModelBean; -//import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; -//import cn.estsh.i3plus.pojo.base.common.Pager; -//import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; -//import cn.estsh.i3plus.pojo.platform.bean.SysRole; -//import cn.estsh.i3plus.pojo.platform.bean.SysUser; -//import cn.estsh.impp.framework.boot.util.ResultBean; -//import io.swagger.annotations.Api; -//import io.swagger.annotations.ApiOperation; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.beans.factory.annotation.Value; -//import org.springframework.web.bind.annotation.*; -// -//import java.util.Map; -// -//@RestController -//@RequestMapping("/impp/cloud") -//@Api(description="分布式服务测试") -//public class DemoCloudController { -// -// private static final Logger LOGGER = LoggerFactory.getLogger(DemoCloudController.class); -// -// @Value("${server.port}") -// private String serverPort; -// -// @Value("${eureka.instance.ip-address}") -// private String ipAddress; -// -// @Autowired -// ICoreDemoCloud iCoreDemoCloud; -// -// @Autowired -// IWmsDemoCloud iWmsDemoCloud; -// -// @GetMapping(value="/test") -// @ApiOperation(value="core测试",notes = "core测试") -// public ResultBean testCore(String test) { -// LOGGER.info("{}:{},【impp-core接受数据】{}",ipAddress,serverPort,test); -// return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); -// } -// -// @GetMapping(value="/test-wms") -// @ApiOperation(value="wms测试",notes = "wms测试") -// public ResultBean testWms(String test) { -// LOGGER.info("【{}:{},impp-core接受数据 -> wms】{}",ipAddress,serverPort,test); -// -// BaseResultBean result = iWmsDemoCloud.testWms(test); -// if(result.isSuccess()){ -// return ResultBean.success("wms返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); -// }else{ -// LOGGER.error("无法调用wms服务:{}",result.getErrorMsg()); -// return ResultBean.fail("调用wms服务出错:" + result.getErrorMsg()); -// } -// } -// -// @GetMapping(value="/test-get") -// @ApiOperation(value="测试get",notes = "测试get") -// public ResultBean testFeignGet(String test) { -// LOGGER.info("【impp-core-get接受数据】{}" ,test); -// return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); -// } -// -// @PostMapping(value="/test-post") -// @ApiOperation(value="测试post",notes = "测试post") -// public ResultBean testFeignPost(String test) { -// LOGGER.info("【impp-core-post接受数据】{}" ,test); -// return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); -// } -// -// @PutMapping(value="/test-put") -// @ApiOperation(value="put接受数据",notes = "put接受数据") -// public ResultBean testPut(String test,String name) { -// LOGGER.info("【impp-core-put接受数据】param1:{},param2:{}", test,name); -// return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); -// } -// -// @DeleteMapping(value="/test-delete") -// @ApiOperation(value="delete接受数据",notes = "delete接受数据") -// public ResultBean testDelete( -// @RequestBody Pager pager, -// @RequestParam("test") String test) { -// LOGGER.info("【impp-core-delete接受数据】pager:{},test:{}",pager,test); -// return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); -// } -// -// @PutMapping(value="/test-cloud-put") -// @ApiOperation(value="测试cloudput",notes = "测试cloudput") -// public ResultBean putTestCloud(String test,String name) { -// LOGGER.info("【impp-core-put接受数据】test:{},name:{}",test,name); -// return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); -// } -// -// @PostMapping(value="/test-object") -// @ApiOperation(value="测试单对象") -// public ResultBean testObject(@RequestBody Pager pager) { -// LOGGER.info("【impp-core-object接受数据】{}" ,pager); -// return ResultBean.success("返回:" + pager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); -// } -// -// @PostMapping(value="/test-map") -// @ApiOperation(value="测试get",notes = "测试get") -// public ResultBean testFeignMap(@RequestBody Map map) { -// LOGGER.info("【impp-core-map接受数据】{}" ,map); -// return ResultBean.success("返回:" + map).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); -// } -// -// @PostMapping(value="/test-arr") -// @ApiOperation(value="测试arr",notes = "测试arr") -// public ResultBean testFeignArr(@RequestBody String[] arr) { -// LOGGER.info("【impp-core-arr接受数据】{}" ,arr); -// return ResultBean.success("返回:" + arr).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); -// } -// -// @PostMapping(value="/test-more-object") -// @ApiOperation(value="测试多对象模型",notes = "测试多对象模型") -// public ResultBean testFeignMoreObj(@RequestBody BaseModelBean roleBean) { -// LOGGER.info("【impp-core-more-obj接受多对象模型】objBean:{},pager:{}" ,roleBean.getObj(),roleBean.getPager()); -// return ResultBean.success("返回:" + roleBean).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); -// } -//} +package cn.estsh.i3plus.core.apiservice.controller; + +import cn.estsh.i3plus.icloud.core.sdk.ICoreDemoCloud; +import cn.estsh.i3plus.icloud.wms.sdk.IWmsDemoCloud; +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import cn.estsh.i3plus.pojo.base.bean.BaseModelBean; +import cn.estsh.i3plus.pojo.base.bean.BaseResultBean; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysRole; +import cn.estsh.i3plus.pojo.platform.bean.SysUser; +import cn.estsh.impp.framework.boot.util.ResultBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@RestController +@RequestMapping("/impp/cloud") +@Api(description="分布式服务测试") +public class DemoCloudController { + + private static final Logger LOGGER = LoggerFactory.getLogger(DemoCloudController.class); + + @Value("${server.port}") + private String serverPort; + + @Value("${eureka.instance.ip-address}") + private String ipAddress; + + @Autowired + ICoreDemoCloud iCoreDemoCloud; + + @Autowired + IWmsDemoCloud iWmsDemoCloud; + + @GetMapping(value="/test") + @ApiOperation(value="core测试",notes = "core测试") + public ResultBean testCore(String test) { + LOGGER.info("{}:{},【impp-core接受数据】{}",ipAddress,serverPort,test); + return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } + + @GetMapping(value="/test-wms") + @ApiOperation(value="wms测试",notes = "wms测试") + public ResultBean testWms(String test) { + LOGGER.info("【{}:{},impp-core接受数据 -> wms】{}",ipAddress,serverPort,test); + + BaseResultBean result = iWmsDemoCloud.testWms(test); + if(result.isSuccess()){ + return ResultBean.success("wms返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }else{ + LOGGER.error("无法调用wms服务:{}",result.getErrorMsg()); + return ResultBean.fail("调用wms服务出错:" + result.getErrorMsg()); + } + } + + @GetMapping(value="/test-get") + @ApiOperation(value="测试get",notes = "测试get") + public ResultBean testFeignGet(String test) { + LOGGER.info("【impp-core-get接受数据】{}" ,test); + return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } + + @PostMapping(value="/test-post") + @ApiOperation(value="测试post",notes = "测试post") + public ResultBean testFeignPost(String test) { + LOGGER.info("【impp-core-post接受数据】{}" ,test); + return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } + + @PutMapping(value="/test-put") + @ApiOperation(value="put接受数据",notes = "put接受数据") + public ResultBean testPut(String test,String name) { + LOGGER.info("【impp-core-put接受数据】param1:{},param2:{}", test,name); + return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } + + @DeleteMapping(value="/test-delete") + @ApiOperation(value="delete接受数据",notes = "delete接受数据") + public ResultBean testDelete( + @RequestBody Pager pager, + @RequestParam("test") String test) { + LOGGER.info("【impp-core-delete接受数据】pager:{},test:{}",pager,test); + return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } + + @PutMapping(value="/test-cloud-put") + @ApiOperation(value="测试cloudput",notes = "测试cloudput") + public ResultBean putTestCloud(String test,String name) { + LOGGER.info("【impp-core-put接受数据】test:{},name:{}",test,name); + return ResultBean.success("返回:" + test).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } + + @PostMapping(value="/test-object") + @ApiOperation(value="测试单对象") + public ResultBean testObject(@RequestBody Pager pager) { + LOGGER.info("【impp-core-object接受数据】{}" ,pager); + return ResultBean.success("返回:" + pager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } + + @PostMapping(value="/test-map") + @ApiOperation(value="测试get",notes = "测试get") + public ResultBean testFeignMap(@RequestBody Map map) { + LOGGER.info("【impp-core-map接受数据】{}" ,map); + return ResultBean.success("返回:" + map).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } + + @PostMapping(value="/test-arr") + @ApiOperation(value="测试arr",notes = "测试arr") + public ResultBean testFeignArr(@RequestBody String[] arr) { + LOGGER.info("【impp-core-arr接受数据】{}" ,arr); + return ResultBean.success("返回:" + arr).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } + + @PostMapping(value="/test-more-object") + @ApiOperation(value="测试多对象模型",notes = "测试多对象模型") + public ResultBean testFeignMoreObj(@RequestBody BaseModelBean roleBean) { + LOGGER.info("【impp-core-more-obj接受多对象模型】objBean:{},pager:{}" ,roleBean.getObj(),roleBean.getPager()); + return ResultBean.success("返回:" + roleBean).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoEurekaController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoEurekaController.java index 8813665..ae62e50 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoEurekaController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoEurekaController.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.core.apiservice.controller; +import cn.estsh.impp.framework.boot.eureka.EurekaClientHealthCheck; import cn.estsh.impp.framework.boot.util.ResultBean; import com.netflix.appinfo.ApplicationInfoManager; import com.netflix.appinfo.EurekaInstanceConfig; @@ -37,6 +38,9 @@ public class DemoEurekaController { @Autowired private ApplicationInfoManager applicationInfoManager; + @Autowired + private EurekaClientHealthCheck healthCheck; + /** * 停止微服 * @return @@ -50,7 +54,7 @@ public class DemoEurekaController { } /** - * 停止微服 + * 显示微服信息 * @return */ @GetMapping(value="/show") @@ -71,4 +75,30 @@ public class DemoEurekaController { return new ResultBean(true); } + + /** + * 改变微服状态 + * @return + */ + @GetMapping(value="/health-status") + @ApiOperation(value="微服健康状态",notes = "查看微服健康状态") + public ResultBean healthStatus() { + LOGGER.info("【微服状态】{}",healthCheck.isHealth()); + + return new ResultBean(true,"状态:" + healthCheck.isHealth()); + } + + /** + * 改变微服状态 + * @return + */ + @GetMapping(value="/change-status") + @ApiOperation(value="改变微服状态",notes = "改变微服状态(true,正常使用.false,停止使用)") + public ResultBean changeStatus(boolean status) { + LOGGER.info("【改变微服状态】{}",status); + + healthCheck.setHealth(status); + + return new ResultBean(true); + } } diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties index 64be42b..200f57a 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties @@ -52,9 +52,11 @@ eureka.instance.hostname=${impp.server.ip} eureka.instance.status-page-url=http://${impp.server.ip}:${server.port}/swagger-ui.html #将自己的IP注册到Eureka Server。若不配置或设置为false,表示注册微服务所在操作系统的hostname到Eureka Server eureka.instance.prefer-ip-address=true +#是否进行健康检查 +eureka.client.healthcheck.enabled=true ################ 检测机制 ################ -#心跳间隔周期,宕机限制(秒),90秒没反应视为宕机 +#心跳间隔周期,宕机限制(秒),30秒没反应视为宕机 eureka.instance.lease-expiration-duration-in-seconds=30 #心跳周期 eureka.instance.lease-renewal-interval-in-seconds=20 diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-test.properties b/modules/i3plus-core-apiservice/src/main/resources/application-test.properties index 6355e6e..7a27313 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-test.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-test.properties @@ -41,6 +41,8 @@ eureka.instance.ip-address=192.168.1.20 eureka.instance.status-page-url=http://${eureka.instance.ip-address}:${server.port}/swagger-ui.html #将自己的IP注册到Eureka Server。若不配置或设置为false,表示注册微服务所在操作系统的hostname到Eureka Server eureka.instance.prefer-ip-address=true +#是否进行健康检查 +eureka.client.healthcheck.enabled=true #### 检测机制 #### #心跳间隔周期,宕机限制(秒),90秒没反应视为宕机