客户关闭后,助焊剂没有取消或处置

时间:2019-06-02 07:55:02

标签: spring-webflux eventsource

访问通过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。

0 个答案:

没有答案