Java Heartbeat framework

#java #heartbeat

#java #сердцебиение

Вопрос:

Мне нужно реализовать механизм сердцебиения, который отправляет «сенсорное» сообщение во внешнюю службу каждые X секунд, чтобы поддерживать сеанс в рабочем состоянии, если в службу не отправляются другие сообщения. Я рассматривал возможность использования таких вещей, как ScheduledExecutorService или Timer, но мне нужно найти что-то, где я могу сбросить таймер / задержку, когда в сеансе отправляются другие сообщения, чтобы я не отправлял сердцебиения, когда они не требуются.

Существуют ли какие-либо известные фреймворки для этого типа механизма сердцебиения, поскольку это может показаться обычной функцией сердцебиения? Или, может кто-нибудь, пожалуйста, указать мне правильное направление, чтобы создать эффективное решение моей проблемы на основе стандартных компонентов?

Комментарии:

1. Это звучит слишком специфично для того, чтобы для него существовала существующая структура. Кроме того, похоже, что ваша задача не так уж сложна — я бы пересмотрел использование a Timer для вызова какой-либо внешней службы — вы можете заставить ее работать, и у нее есть reset метод.

2. Разве не было бы достаточно просто пропустить сердцебиение для данного вызова таймера, если с момента последнего раза была какая-то активность? Или, какой вред в отправке дополнительных сообщений о сердцебиении? Моя интуиция подсказывает мне, что вы бы ввели больше накладных расходов при правильной синхронизации для связи с таймером, чем вызвали бы дополнительные удары сердца.

Ответ №1:

Самый простой способ, который я мог видеть, это просто написать свой собственный. Создайте объект, который может отправлять сообщение «touch», затем создайте процесс-демон, чтобы делать это непрерывно.

Все это должно быть выполнимо с Thread помощью POJOs и Process классов and . Удачи!

Комментарии:

1. Да, пошел с a ScheduledExecutorService и реализовал reset метод, который сбрасывает задержку до следующего сердцебиения. Спасибо за все предложения и комментарии.