【发布时间】:2017-12-15 18:54:12
【问题描述】:
这是否是通过浏览器客户端发送常见主题信息的正确方法?
@RestController
public class GenvScriptHandler {
DirectProcessor<String> topicData = DirectProcessor.create();
FluxSink<String> sink;
int test;
@GetMapping(value = "/addTopic")
public void addTopic() {
if (sink == null) {
sink = topicData.sink();
}
sink.next(String.valueOf(test++));
}
@GetMapping(value = "/getTopic", produces = "text/event-stream")
public Flux<String> getTopic() {
Flux<String> autoConnect = topicData.publish().autoConnect();
return autoConnect;
}
}
当我使用 DirectProcessor 时,不可能有背压,我想知道通过 sse 发送时通量是如何消耗的。订阅者是否可以请求少于在通量中推送的数字元素?
http://projectreactor.io/docs/core/release/reference/#_directprocessor
因此,如果您通过 DirectProcessor 推送 N 个元素,但其订阅者中至少有一个请求少于 N 个,则 DirectProcessor 会向其订阅者发出 IllegalStateException 信号。
【问题讨论】:
标签: spring reactive-programming server-sent-events project-reactor