состояние отказа и перезапуска активной зоны реактора

Я новичок в активной зоне реактора, в прошлом работал с Erlang.

Надеюсь, быстрый вопрос.

Допустим, мы отправили сообщение «А» и ожидаем ответа через x минут. Если ответ не приходит в течение x минут, мы запускаем резервную процедуру.

Это можно сделать с помощью Flux или Mono с таймаутом метода (продолжительность, откат)

Вот API с сайта rector-core

public final Mono<T> timeout(Duration timeout,
                             Mono<? extends T> fallback)
Switch to a fallback Mono in case no item arrives within the given Duration.
If the fallback Mono is null, signal a TimeoutException instead.
Parameters:
timeout - the timeout before the onNext signal from this Mono
fallback - the fallback Mono to subscribe to when a timeout occurs
Returns:
a Mono that will fallback to a different Mono in case of timeout

Что произойдет, если JVM выйдет из строя и перезапустится?

Допустим, сбой и перезапуск занимает y минут (предположим, что y меньше x).

Знает ли активная зона реактора, что произошла авария? Может ли он перезапустить обработку потока, зная, что теперь ему нужно подождать (x-y) минут?

Я знаю, что Camunda хранит состояние в СУБД. Следовательно, возможно, он должен восстановиться после сбоя.


person Suchak Jani    schedule 13.04.2018    source источник
comment
Какое отношение имеет камунда к вашему вопросу о реакторе.   -  person Jan Galinski    schedule 14.04.2018
comment
@JanGalinski Camunda выглядит как фреймворк, который может выполнять тайм-ауты на основе потока и может хранить статус и данные в СУБД и, следовательно, должен иметь возможность восстановления после сбоев.   -  person Suchak Jani    schedule 14.04.2018
comment
Camunda - это механизм процесса ... поэтому вы моделируете процесс, который представляет ваши запланированные действия, и запускаете его. внутри его классическая реляционная / транзакционная модель данных, которая хранит состояния. Сохранение состояния позволяет перезапустить и продолжить ... но каков вариант использования? Почему вы пытаетесь сделать выбор между реактивной потоковой обработкой и механизмом реляционных процессов?   -  person Jan Galinski    schedule 14.04.2018
comment
@JanGalinski Спасибо за ответ, я понимаю, я смотрю на разные вещи. Мой вариант использования - получить отдельное сообщение от отправителя, отправить одно и то же отдельное сообщение одному получателю. Ожидается, что получатель отправит ответ через некоторое время (в минутах). Если нет ответа, запускается альтернативный поток. Теперь вы знаете, что это может быть от 25000 до 50000 сообщений в секунду, а также, если какой-либо узел обработки выходит из строя, обработка должна начинаться с того места, где она остановилась, особенно для тайм-аутов.   -  person Suchak Jani    schedule 16.04.2018


Ответы (1)


Reactor - это библиотека, предназначенная для обработки событий в реальном времени в пределах JVM, как с точки зрения локальности обрабатываемых данных, так и с точки зрения жизненного цикла. Сохранение состояния (на диске или в любом другом месте) или восстановление после сбоев JVM выходит за рамки библиотеки.

person Simon Baslé    schedule 15.04.2018
comment
Спасибо за Ваш ответ. Имеет смысл. - person Suchak Jani; 16.04.2018