【问题标题】:Difference between two flux两种助焊剂的区别
【发布时间】:2020-02-02 17:10:05
【问题描述】:

我有两种顺序不重要的助焊剂,我想得到一种不同的合成助焊剂。我该怎么做?

例子:

Flux<Tweet> remoteTweets = Flux.just(
        new Tweet("tag1",new TweetID("text","name"),"userimage","country","place"),
        new Tweet("tag2",new TweetID("text","name"),"userimage","country","place")
);

Flux<Tweet> localTweets = Flux.just(
        new Tweet("tag1",new TweetID("text","name"),"userimage","country","place")
);

预期结果:tag2

【问题讨论】:

    标签: spring-webflux project-reactor


    【解决方案1】:

    如果localTweets 是一个有限流并且适合内存,那么以下工作:

    Flux<Tweet> remoteTweets = Flux.just(
            new Tweet("tag1", new TweetID("text", "name"), "userimage", "country", "place"),
            new Tweet("tag2", new TweetID("text", "name"), "userimage", "country", "place")
    );
    
    Flux<Tweet> localTweets = Flux.just(
            new Tweet("tag1", new TweetID("text", "name"), "userimage", "country", "place")
    ).cache(); // note cache operator here, to avoid mutiple subscription
    
    remoteTweets
            .filterWhen(remoteTweet -> localTweets.hasElement(remoteTweet).map(hasElement -> !hasElement))
            .subscribe(System.out::println);
    

    如果流是有限的,但不适合内存,那么您应该将cache 运算符排除在外。这意味着localTweets Flux 将被订阅多次。

    如果流是无限的,您应该应用一些窗口策略(例如,仅检查最近 10 分钟的推文)。

    【讨论】:

      猜你喜欢
      • 2020-02-29
      • 1970-01-01
      • 2016-02-05
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      • 2015-02-11
      相关资源
      最近更新 更多