2016-11-12 6 views
1

RxJava 또는 Reactive Stream에서 content based routing을 수행하는 관용적 인 방법을 알고 있습니까?RxJava로 콘텐츠 기반 라우팅에 관용적 인 방법

지도 필터와 변환과 같은 표준 연산자를 사용하여 반응 메시지 처리 파이프 라인을 만드는 방법을 알 수 있습니다.

하지만 연산자를 사용하여 가능한 여러 파이프 라인을 전환하는 관용어를 볼 수 없습니다.
하나의 초기 입력 개체 또는 맵을 기반으로 많은 처리 파이프 라인을 트리거 할 수 있기를 원합니다. 따라서 입력 맵 또는 개체의 내용에 따라 다른 파이프 라인이 선택됩니다.

아이디어는 외부 API에 대한 여러 가지 가능한 요청을 하나 만들어야하며, 컨트롤러에 대한 입력 개체에 따라 API와 파이프 라인이 트리거되도록 결정합니다.

스프링 통합 또는 Camel을 사용할 수 있음을 알고 있지만, 유스 케이스가 통합 엔진의 완전한 유연성을 필요로하지 않아 유선 대기 시간을 처리 할 수 ​​없습니다.

+0

'관용적 인 방식'을 의미합니까? –

+0

관용적 인 방법으로 죄송합니다. 내장 연산자를 사용하는 것이 좋습니다. Tx –

+0

그래, 나는 당신이 관용적 인 방법을 의미한다고 생각했다. 텍스트가 '관용적 인 이유'라고 말하는 것이 좋다. –

답변

3

컨텐츠 기반의 라우팅 flatMap위한 작업입니다 친절, 감사 :

observable.flatMap(x -> { 
    if (isA(x)) 
     return observableA(x); 
    else 
     return observableB(x); 
});