나는 반응적인 스트림을 배우고 publc-subcribe 유틸리티를 사용하고 Publisher (내 Flux) 및 구독자의 기본 동작을 사용하고 있습니다.가입자가 다른 경우에 다른 수의 요소를 요청하는 이유는 무엇입니까?
두 가지 시나리오가 있습니다. 둘 다 Flux에서 같은 수의 요소를 사용합니다. 하지만 로그를 분석 할 때 onSubscribe 메서드는 다른 수의 요소를 요청하고 있습니다. 한 가지 경우에는 무한 요소를 요청하고 다른 요소는 32 개 요소를 요청하는 경우입니다. 로그
System.out.println("*********Calling MapData************");
List<Integer> elements = new ArrayList<>();
Flux.just(1, 2, 3, 4)
.log()
.map(i -> i * 2)
.subscribe(elements::add);
//printElements(elements);
System.out.println("-------------------------------------");
System.out.println("Inside Combine Streams");
List<Integer> elems = new ArrayList<>();
Flux.just(10,20,30,40)
.log()
.map(x -> x * 2)
.zipWith(Flux.range(0, Integer.MAX_VALUE),
(two, one) -> String.format("First : %d, Second : %d \n", one, two))
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) {
}
});
System.out.println("-------------------------------------");
여기에 있습니다 : :
이유에서 다음 내가 모든 사용자 정의 가입자 구현을 사용하지 않은 것처럼*********Calling MapData************
[warn] LoggerFactory has not been explicitly initialized. Default system-logger will be used. Please invoke StaticLoggerBinder#setLog(org.apache.maven.plugin.logging.Log) with Mojo's Log instance at the early start of your Mojo
[info] | onSubscribe([Synchronous Fuseable] FluxArray.ArraySubscription)
[info] | request(unbounded)
[info] | onNext(1)
[info] | onNext(2)
[info] | onNext(3)
[info] | onNext(4)
[info] | onComplete()
-------------------------------------
Inside Combine Streams
[info] | onSubscribe([Synchronous Fuseable] FluxArray.ArraySubscription)
[info] | request(32)
[info] | onNext(10)
[info] | onNext(20)
[info] | onNext(30)
[info] | onNext(40)
[info] | onComplete()
[info] | cancel()
-------------------------------------
, "MapData"경우 여기
는 두 경우와 로그입니다 , "[정보] | 요청 (무한)"을 로깅하고 "내부 결합 스트림" " "[정보] | 요청 (32) "을 로깅합니다.좋습니다.