From 2547c80a9abce538ef416b0e97f3aeda0440e157 Mon Sep 17 00:00:00 2001 From: xueqingkun Date: Mon, 13 Nov 2023 15:35:10 +0800 Subject: [PATCH] =?UTF-8?q?web=20:=201.=E6=B7=BB=E5=8A=A0=E5=BF=83?= =?UTF-8?q?=E8=B7=B3=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/HeartController.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 virtual-patient-web/src/main/java/com/supervision/controller/HeartController.java diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/HeartController.java b/virtual-patient-web/src/main/java/com/supervision/controller/HeartController.java new file mode 100644 index 00000000..78779e9a --- /dev/null +++ b/virtual-patient-web/src/main/java/com/supervision/controller/HeartController.java @@ -0,0 +1,68 @@ +package com.supervision.controller; + +import cn.hutool.cache.CacheUtil; +import cn.hutool.cache.impl.TimedCache; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.*; + + +@Slf4j +@Api(tags = "心跳检查") +@RestController +@RequestMapping("heart") +@RequiredArgsConstructor +public class HeartController { + + + TimedCache onlineCache = CacheUtil.newTimedCache(50*1000); + + { + onlineCache.setListener((key,value)->{ + log.info(" onlineCache : remove listener key: " + key + " value: "+value); + onlineCache.remove(key); + }); + } + @ApiOperation("心跳") + @GetMapping("ping") + public void ping (String processId, HttpServletRequest request) { + + String ipAddress = request.getHeader("X-Real-IPheader"); + + if (StrUtil.isEmpty(ipAddress)){ + log.info("X-Real-IPheader is empty ....,use ip " + request.getRemoteAddr()); + ipAddress = request.getRemoteAddr(); + } + + if (StrUtil.isNotEmpty(ipAddress)){ + log.info("onlineCache : set cache... processId: "+ processId + " value "+ipAddress); + onlineCache.put(processId,ipAddress); + } + } + + @ApiOperation("存活节点") + @GetMapping("get") + public Map getOnline () { + Map result = new HashMap<>(); + Set objects = onlineCache.keySet(); + if (CollectionUtil.isNotEmpty(objects)){ + for (Object key : objects) { + result.put(key.toString(),onlineCache.get(key)); + } + } + return result; + + } + + + +}