【问题标题】:Set periodic in Vertx does not getting triggered every time在 Vertx 中设置周期性不会每次都被触发
【发布时间】: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()

标签: java vert.x


【解决方案1】:

您以错误的方式使用 lambda。 vertx.setPeriodic(300000, handler -> myClass.myHandler());什么都不做,你应该使用 vertx.setPeriodic(300000, myClass.myHandler());

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2017-02-13
  • 1970-01-01
  • 2017-10-03
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
相关资源
最近更新 更多