<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    SPRING REACTOR 使用樣例

    SpringReactorTest.java

    package com.paul.testreactivestream.reactor;


    import java.util.List;

    import org.junit.jupiter.api.Test;

    import reactor.core.publisher.Flux;
    import reactor.core.publisher.Mono;
    import reactor.core.scheduler.Schedulers;

    public class SpringReactorTest {
        
        private void subscribeAndEnd(Flux<?> flux) {
            
            flux.map(c -> String.format("[%s] %s", Thread.currentThread().getName(), c))
                .subscribe(System.out::println);
            
            flux.blockLast();
        }
        
        @Test
        public void createAFlux_just() throws InterruptedException {
            Flux<String> fruitFlux = 
                    Flux.just("Apple", "Orange", "Grape", "Banana", "Strawberry")
                        .log()
                        ;
            fruitFlux.subscribe(
                         f -> System.out.println(
                                     String.format("[%s] Here's some fruit: %s", Thread.currentThread().getName(), f)
                                 )
                      )
                     ;
            fruitFlux.blockLast();
            
    //        Thread.currentThread().join();
        }
        
        @Test
        public void zipFluxesToObject() {
            Flux<String> characterFlux = 
                    Flux.just("Garfield", "Kojak", "Barbossa");
            
            Flux<String> foodFlux = 
                    Flux.just("Lasagna", "Lollipops", "Apples");
            
            Flux<String> zippedFlux = 
                    Flux.zip(characterFlux, foodFlux, (c, f) -> c + " eats " + f);
            
            this.subscribeAndEnd(zippedFlux);
        }
        
        @Test
        public void map() {
            Flux<Player> playerFlux = 
                    Flux.just("Michael Jordan", "Scottie Pippen", "Steve Kerr")
                        .map(n -> {
                            String[] split = n.split("\\s");
                            return new Player(split[0], split[1]);
                        })
                        ;
            this.subscribeAndEnd(playerFlux);
        }
        
        @Test
        public void flatMap() {
            Flux<Player> playerFlux = 
                    Flux.just("Michael Jordan", "Scottie Pippen", "Steve Kerr")
                        .flatMap(
                            n -> Mono.just(n)
                                     .map(p -> {
                                        String[] split = p.split("\\s");
                                        return new Player(split[0], split[1]);
                                      })
                                     .subscribeOn(Schedulers.parallel())
                         );
            this.subscribeAndEnd(playerFlux);
        }
        
        @Test
        public void buffer() {
            Flux<List<String>> fruitFlux = 
                    Flux.just(
                            "apple", "orange", "banana", "kiwi", "strawberry"
                         )
                        .buffer(3);
            this.subscribeAndEnd(fruitFlux);
        }
        
        @Test
        public void bufferAsyn() {
            Flux<String> flux =
                Flux.just(
                        "apple", "orange", "banana", "kiwi", "strawberry"
                     )
                    .buffer(3)
                    .flatMap(x ->
                        Flux.fromIterable(x)
                            .map(y -> y.toUpperCase())
                            .subscribeOn(Schedulers.parallel())
        //                    .log()
                     );
            this.subscribeAndEnd(flux);
        }
        
        @Test
        public void all() {
            Mono<Boolean> animalFlux = 
                    Flux.just(
                            "aardvark", "elephant", "koala", "eagle", "kangaroo"
                         )
                        .all(c -> c.contains("a"))
                        ;
            animalFlux.map(c -> String.format("[%s] %s", Thread.currentThread().getName(), c))
                      .subscribe(System.out::println);
        
        }

    }

    posted on 2021-11-23 13:59 paulwong 閱讀(340) 評論(0)  編輯  收藏 所屬分類: REACTIVE STREAMS

    主站蜘蛛池模板: 国产在线19禁免费观看国产| 日韩一级免费视频| 亚洲中文字幕无码一久久区| 国内成人精品亚洲日本语音 | 精品一区二区三区免费观看| 国产成人免费一区二区三区| 亚洲av成人中文无码专区| 日韩在线天堂免费观看| 苍井空亚洲精品AA片在线播放| 成人爱做日本视频免费| 精品亚洲国产成人av| 免费a级黄色毛片| 国产无遮挡色视频免费观看性色| 中文字幕精品无码亚洲字 | 亚洲午夜成人精品电影在线观看| 黄页网站在线免费观看| 精品亚洲一区二区三区在线观看| 国产精品免费久久| 亚洲国产成人私人影院| 天天影院成人免费观看| 亚洲国产日韩综合久久精品| 热久久精品免费视频| 最好2018中文免费视频| 亚洲午夜无码久久久久| 120秒男女动态视频免费| 亚洲电影日韩精品| 国产在线观看无码免费视频| 亚洲国产精品自在在线观看| 精品国产无限资源免费观看| 亚洲色精品三区二区一区| 亚洲AV之男人的天堂| 好久久免费视频高清| 亚洲国产成人超福利久久精品| 免费无码黄动漫在线观看| 国产福利免费视频| 亚洲色图.com| 亚洲av无码天堂一区二区三区 | 特级淫片国产免费高清视频| 一级毛片大全免费播放| 亚洲黄网站wwwwww| 亚洲第一区精品观看|