Использование конечного автомата для реализации системы Поллера - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь создать http poller system. Предполагается, что он будет делать следующее:

Для каждого пользователя попробуйте установить соединение с сервером. Если это не удается, проверьте причину ошибки, возможно,этот сервер недоступен, поэтому попробуйте другой, если причина неверна. Учетные данные делают что-то еще .. Как только мы установим соединение для этого пользователя, мы начинаем опросить сервер для получения какой-либо информации о пользователе

И я думал о state machine, где у каждого пользователя есть экземпляр конечного автомата (хранится в карте userId -> statemachine), и у меня есть несколько запланированных задач, одна из которых выбирает данные всех пользователей каждую 1 секунду, скажем,он фильтрует конечные автоматы, к которым подключено текущее состояние ..

Это было бы хорошей идеей?Имеет ли смысл использовать конечный автомат для такой проблемы?

1 Ответ

0 голосов
/ 18 декабря 2018

Я думаю, что это хорошая идея - использовать конечный автомат.Конечный автомат имеет три состояния: INITIAL, NEXT_STEP и FINAL, и в каждом состоянии есть реализация метода doSomething ().который принимает аргумент и в зависимости от аргумента он может перейти к следующему состоянию.если вы хотите настроить свой конечный автомат, проверьте эту реализацию с открытым исходным кодом с помощью linkedin, чтобы реализовать конечный автомат, который был допустимым вариантом использования.Вы можете проверить дизайн здесь LinkedIn URL Shortner Моделирование конечного автомата с использованием Java Enum.А для запланированного задания вы можете использовать

CompletableFuture

, подробности здесь. Завершаемое будущее

...