Можно ли программно найти вышестоящих издателей с Reactor 3.0? - PullRequest
0 голосов
/ 16 октября 2018

Учитывая список потоков, я бы хотел определить, какие находятся выше по потоку от других в списке, а какие нет.Способ получить вышестоящих издателей для каждого потока может помочь, но я открыт для других предложений.

Кроме того, возможно ли обнаружить круговые зависимости между потоками?Я хотел бы разрешить только создание групп DAG.

1 Ответ

0 голосов
/ 19 октября 2018

Существует лучший способ (не поддерживается на 100%) с интерфейсом Scannable:

Flux<T> fluxToCheck;
List<Flux> potentialParents;

Scannable s = Scannable.from(fluxToCheck);
Stream<Scannable> parents = s
    .parents() //this is the important part
    .collect(Collectors.toList());

potentialParents.retainAll(parents);
//or some more efficient other tests on the collections

Scannable#parents() рекурсивно ищет Scannable, который рекламирует PARENT, который я считаюбольшинство операторов ядра Reactor должны это делать.

Scannable.from(foo) возвращает NO-OP Scannable, если объект, который вы передаете, на самом деле не Scannable.

...