访问通过Chrome或JS Flux
返回无限结果的EventSource
时,Chrome上的“ X”或运行Javascript EventSource.close()
均不会导致FluxEmitter
的{ {1}}或onCancel()
触发。这些事件似乎仅在Spring关闭时运行。
当客户端停止时,如何关闭onDispose()
?
这里是Flux
的示例;
Flux
这是终点;
public class MyRepository {
public Flux<MyObject> getFlux() {
return Flux<MyObject>.create(sink -> {
for(...) { // get data we have now in EhCache.
sink.next(myObject);
}
myListener = new MyListener() { // get updates from EhCache events.
public void onEvent(MyEvent e) {
sink.next(e.getNewValue());
}
};
sink.onCancel(() -> {
System.out.println("** CANCELLED **");
sink.complete();
}
sink.onDispose(() -> {
System.out.println("** DISPOSED **");
}
}
);
}
在没有取消\关闭的情况下,并且在Flux发出大量请求之后,由于没有释放资源,Spring开始死亡。
我正在使用Sping 5.1.5,Boot 2.1.3,Reactor 3.2.6和Netty 4.1.33。