这是我最终要解决的千分尺缺陷。
同时,您需要将该值保存在映射中,以免垃圾回收。请注意,然后我们如何将量规指向地图,并通过lambda提取值以避免垃圾收集。
public class MonitorService { private Map<String, Integer> gaugeCache = new HashMap<>(); private InfoCollectionService infoService; public MonitorService(InfoCollectionService infoService) { this.infoService = infoService } @Scheduled(fixedDelay = 5000) public void currentLoggedInUserMonitor() { infoService.getLoggedInUser("channel").forEach(channel -> { gaugeCache.put(channel.getchannelName(), channel.getgetLoggedInUser()); Metrics.gauge("LoggedInUsers.Inchannel_" + channel.getchannelName(), gaugeCache, g -> g.get(channel.getchannelName())); }); }}我还建议为各种渠道使用标签:
Metrics.gauge("loggedInUsers.inChannel", Tag.of("channel",channel.getchannelName()), gaugeCache, g -> g.get(channel.getchannelName()));


