【发布时间】:2011-10-17 17:19:07
【问题描述】:
如果没有其他消息发送到服务,我需要实现一个心跳机制,每 X 秒向外部服务发送一个“触摸”消息以保持会话处于活动状态。我已经研究过使用诸如 ScheduledExecutorService 或 Timer 之类的东西,但我需要找到一些可以在会话上发送其他消息时重置计时器/延迟的东西,这样我就不会在不需要时发送心跳。
对于这种类型的心跳机制,是否有任何已知的框架,因为它看起来像是常规的心跳功能?或者,谁能指出我正确的方向,以基于标准组件为我的问题创建一个有效的解决方案?
【问题讨论】:
-
这听起来太具体了,以至于没有现有的框架。另外,听起来你的任务并不难——我会重新考虑使用
Timer来调用一些外部服务——你可以让它工作,它有一个reset方法。 -
如果自上次以来有一些活动,仅仅跳过给定计时器调用的心跳难道不够吗?或者,发送额外的心跳消息有什么危害?我的直觉告诉我,在进行适当的同步以与计时器通信时,你会引入更多的开销,而不是额外的心跳会导致。