目前,FluxProcessor
订阅仅检索订阅后发出的那些值。但我想在订阅时检索 Flux 中的最后一个值,例如,像 RX 的 Subject
那样。
我有这样的设置:
FluxProcessor<Integer, Integer> processor = DirectProcessor.<Integer>create().serialize();
FluxSink<Integer> sink = processor.sink();
sink.next(1);
stateProcessor.subscribe(System.out:println);
sink.next(2);
输出是:
1
期望的输出:
1
2
最佳答案
使用ReplayProcessor
修复了它。它能够存储 N 个最后发出的值以供进一步订阅。对于同一示例:
FluxProcessor<Integer, Integer> processor = ReplayProcessor.<Integer>create(1).serialize(); //1 is the history size
FluxSink<Integer> sink = processor.sink();
sink.next(1);
stateProcessor.subscribe(System.out:println);
sink.next(2);
打印:
1
2
关于java - 通量处理器 : retrieve last emitted value on subscribe like rx's Subject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58335032/