#java #heartbeat
#java #сердцебиение
Вопрос:
Мне нужно реализовать механизм сердцебиения, который отправляет «сенсорное» сообщение во внешнюю службу каждые X секунд, чтобы поддерживать сеанс в рабочем состоянии, если в службу не отправляются другие сообщения. Я рассматривал возможность использования таких вещей, как ScheduledExecutorService или Timer, но мне нужно найти что-то, где я могу сбросить таймер / задержку, когда в сеансе отправляются другие сообщения, чтобы я не отправлял сердцебиения, когда они не требуются.
Существуют ли какие-либо известные фреймворки для этого типа механизма сердцебиения, поскольку это может показаться обычной функцией сердцебиения? Или, может кто-нибудь, пожалуйста, указать мне правильное направление, чтобы создать эффективное решение моей проблемы на основе стандартных компонентов?
Комментарии:
1. Это звучит слишком специфично для того, чтобы для него существовала существующая структура. Кроме того, похоже, что ваша задача не так уж сложна — я бы пересмотрел использование a
Timer
для вызова какой-либо внешней службы — вы можете заставить ее работать, и у нее естьreset
метод.2. Разве не было бы достаточно просто пропустить сердцебиение для данного вызова таймера, если с момента последнего раза была какая-то активность? Или, какой вред в отправке дополнительных сообщений о сердцебиении? Моя интуиция подсказывает мне, что вы бы ввели больше накладных расходов при правильной синхронизации для связи с таймером, чем вызвали бы дополнительные удары сердца.
Ответ №1:
Самый простой способ, который я мог видеть, это просто написать свой собственный. Создайте объект, который может отправлять сообщение «touch», затем создайте процесс-демон, чтобы делать это непрерывно.
Все это должно быть выполнимо с Thread
помощью POJOs и Process
классов and . Удачи!
Комментарии:
1. Да, пошел с a
ScheduledExecutorService
и реализовалreset
метод, который сбрасывает задержку до следующего сердцебиения. Спасибо за все предложения и комментарии.