【问题标题】:Java Heartbeat frameworkJava 心跳框架
【发布时间】:2011-10-17 17:19:07
【问题描述】:

如果没有其他消息发送到服务,我需要实现一个心跳机制,每 X 秒向外部服务发送一个“触摸”消息以保持会话处于活动状态。我已经研究过使用诸如 ScheduledExecutorService 或 Timer 之类的东西,但我需要找到一些可以在会话上发送其他消息时重置计时器/延迟的东西,这样我就不会在不需要时发送心跳。

对于这种类型的心跳机制,是否有任何已知的框架,因为它看起来像是常规的心跳功能?或者,谁能指出我正确的方向,以基于标准组件为我的问题创建一个有效的解决方案?

【问题讨论】:

  • 这听起来太具体了,以至于没有现有的框架。另外,听起来你的任务并不难——我会重新考虑使用Timer 来调用一些外部服务——你可以让它工作,它有一个reset 方法。
  • 如果自上次以来有一些活动,仅仅跳过给定计时器调用的心跳难道不够吗?或者,发送额外的心跳消息有什么危害?我的直觉告诉我,在进行适当的同步以与计时器通信时,你会引入更多的开销,而不是额外的心跳会导致。

标签: java heartbeat


【解决方案1】:

我能看到的最简单的方法就是自己编写。创建一个可以发送“触摸”消息的对象,然后创建一个守护进程来持续执行此操作。

所有这些都应该通过 POJO 和 ThreadProcess 类来实现。祝你好运!

【讨论】:

  • 是的,使用ScheduledExecutorService 并实现了reset 方法,将延迟重置为下一个心跳。感谢所有建议和 cmets。