2017-09-19 5 views
0

유형별로 그룹 요소를 원하는 다음 각 그룹을 줄이려는 고유 한 오브젝트 유형을 가진 하나의 플럭스가 있습니다.반응기에서 GroupedFlux를 줄입니다.

여기에이 작업을 수행하는 간단한 코드가 있습니다.

Flux<Item> item=Flux.just(new Item("item1"), new Item("item2")); 
    Flux<Item2> item2=Flux.just(new Item2(4.0f), new Item2(2.0f)); 

    Flux<Object> objects=Mono.empty().concatWith(item).concatWith(item2);  
    Flux<GroupedFlux<Object>> groups=objects.groupBy(value -> value.getClass()); 

각 흐름을 유형별로 줄일 수있는 방법은 무엇입니까? enter code here

답변

2

나는 거터에 대한 해결책을 발견했습니다. reactiviy에 @simonbasle과 @osi에게 감사드립니다.

https://gitter.im/reactor/reactor

는 방법 flatMap이고 값 discrimine에 키를 사용한다.

groups.flatMap(gf -> { 
     if(gf.key()==Item.class) { 
      return gf.reduce(new Item(""), (a, b) -> { 
       return new Item(a.getValue()+((Item)b).getValue()); 
      }); 
     } 
     else if(gf.key()==Item2.class) { 
      return gf.reduce(new Item2(0.0f), (a, b) -> { 
       return new Item2(a.getValueF()+((Item2)b).getValueF()); 
      }); 
     } 
     throw new IllegalArgumentException("unknown key: "+gf.key()); 
    });