如何退订流量中的项目

时间:2018-12-07 12:47:43

标签: project-reactor

请考虑以下通量

FluxSink<String> sink;
Flux<String> flux1 = Flux
    .<String>create(emitter -> { 
         sink = emitter;
    },...)
    .cache()
    .publish()
    .autoConnect();

因此,要添加/订阅项目,我们可以进行sink.next(“4”);

flux1.subscribe(item -> log.info(“item: “+item);

通过过滤flux1,例如,从元素“ 2”中未将其从流量中移除。 我知道Flux发布者是一成不变的。

如果我们可以通过接收器添加它,如何从flux1中删除一个项目?

1 个答案:

答案 0 :(得分:1)

正确的思想给出正确的答案

将Flux视为不变的消息流。它就像一条河,您可以向其中添加一些水,但是您无法将已经滴下的水回滚。但是,您可以将水过滤掉。

如果您需要从流中“删除”非法元素,可以对其进行过滤:

flux1.filter(e -> !e.equal("2"))
     .subscribe(item -> log.info(“item: “+item);

流量不是我们习惯的数据结构,而是数据流,您不能在数据提供时修改它,但可以操纵它们到达端点的方式