【发布时间】:2019-11-07 14:37:05
【问题描述】:
下面是我的setPeriodic代码
MyClass myClass = new MyClass();
vertx.setPeriodic(300000, handler -> myClass.myHandler());
我在 Kubernetes 的 Vertx 3.5.3 中运行。 myHandler 内部有一个记录器,但不是每 5 分钟打印一次日志(时间以毫秒为单位)。 pod 全天正常处理请求,但myHandler 中的日志行并非每 5 分钟打印一次。日志打印 1 小时,然后停止一段时间。行为是随机的。
编辑
以下是我的处理程序逻辑。我正在使用 slf4j 记录器。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MyClass {
private static final Logger LOGGER = LoggerFactory.getLogger(MyClass.class);
private Map<String, Integer> data = new HashMap<>();
public void myHandler() {
data = new HashMap<>();
LOGGER.info("Refreshed cache ");
}
}
【问题讨论】:
-
我怀疑你的问题出在这一行
-
@taygetos 我还有一个类似的 setPeriodic 显示相同的行为。
-
不过,这一行没有记录任何内容。您可能应该分享更多代码以及您使用的日志记录框架。或者,如果您真的认为 setPeriodic 不起作用,则通过调用记录器来测试它:vertx.setPeriodic(300000, p -> logger.info("hello world"))
-
@taygetos 更新了代码。
-
我认为可能有一些设置可以阻止重复的日志输出。您可以在日志行中测试和添加时间吗? "刷新缓存 {}", System.currentTimeMillis()