【问题标题】:How can i know when CamelContext was started?我怎么知道 CamelContext 何时启动?
【发布时间】:2019-12-05 13:42:14
【问题描述】:

我想知道 CamelContext 是什么时候启动的。如我所见, DefaultCamelContext 有 private Date startDate 字段。没有 getter 或其他方法可以从此字段获取信息。我能得到的只是getUptimeMillis(),它返回正常运行时间,但这不是我想要的。

我知道我可以使用反射获取字段值:

Class clazz = context.getClass();
Field field = clazz.getDeclaredField("startDate");
field.setAccessible(true);
Date date = (Date) field.get(context);

但我认为这不是好方法。

有没有其他方法可以获取这些信息(可能是使用另一个 CamelContext、一些骆驼组件或服务)?

谢谢。

【问题讨论】:

  • 你可以计算Instant ccStarted = Instant.now().minusMillis(context.getUptimeMillis())
  • 谢谢。这可能是一个解决方案,但也许有更漂亮的方法。
  • LocalDateTime now = LocalDateTime.now(); LocalDateTime startDate = now.minus(camelContext.getUptimeMillis(), ChronoField.MILLI_OF_DAY.getBaseUnit());我还没有测试过,但你明白了
  • 你总是可以有一个在启动时开始并保存日期的路线。启动后会稍微...

标签: java apache-camel


【解决方案1】:

是的,我们可以将其作为公共 API。我创建了一张票 https://issues.apache.org/jira/browse/CAMEL-14266

否则,您应该按照建议通过正常运行时间减去当前时间来计算开始日期。

【讨论】:

    猜你喜欢
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多