java - 通量处理器 : retrieve last emitted value on subscribe like rx's Subject

标签 java spring spring-webflux project-reactor reactive

目前,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/

相关文章:

java - JButton 和 ActionEvent 的问题

java - 基于时间的资源可用性

java - 为什么我需要在这里添加类型,有没有更好的方法?

java - Spring Data MongoDB - 将二进制数据附加到现有的 GridFS 文件

java - Couchbase - 自动生成带有用户定义后缀的 key

java - 身份验证期间抛出并处理自定义异常 Spring Security + WebFlux

spring-boot - 如何在 spring-boot web 客户端中发送请求正文?

java - 在 Java 中验证整数值的问题

security - 如何锁定 grails spring security/cas 应用程序?

java - 如何解压缩 Flux<DataBuffer> (以及如何编写)?