2016-11-28 16 views
1

작은 반응기 샘플을 here에서 바꾸려고했는데 약간의 행동으로 혼란 스럽습니다. 이 같은반응기 사용 doOnNext 여러 번

그래서 처음 엔 코드 :

EmitterProcessor<String> stream = EmitterProcessor.<String>create().connect(); 
    Flux<String> flux = stream 
      .doOnNext(s -> System.out.println("1 " + s)) 
      .doOnNext(s -> System.out.println("2 " + s)); 
    flux.subscribe(); 
    stream.onNext("Hello"); 

이 코드를 인쇄 예상대로 두 줄 : 나는 척 중간 가변적이고을 추가하는 경우

1 Hello 
2 Hello 

는하지만 어떤 방법이나 가독성을 위해 그것을 얻을 코드가 다르게 동작하기 시작합니다. 나는 단지 하나 개의 라인을 얻을 수 위의 코드에 대한 그래서

EmitterProcessor<String> stream = EmitterProcessor.<String>create().connect(); 
    Flux<String> flux = stream 
      .doOnNext(s -> System.out.println("1 " + s)); 
    flux .doOnNext(s -> System.out.println("2 " + s)); 
    flux.subscribe(); 
    stream.onNext("Hello"); 

, 즉 :

1 Hello 

이 사람이이 동작을 설명 할 수 있습니까?

답변

1

Stephane Maldini 덕분에 Flux는 불변이고 각 작업마다 다른 흐름이 생성된다는 것을 알았습니다. 토론은 here

입니다.