272.7. Camel로 변환 요청

일부 Camel DSL에 정의된 경로는 반응 스트림 프레임워크 내에서 사용하여 특정 변환을 수행할 수 있습니다(예: http 엔드포인트로 데이터 전송 및 계속).

다음 코드 조각은 Rx Java 기능 코드에서 Camel에 파일을 로드 및 마샬링하는 작업을 요청할 수 있는 방법을 보여줍니다.

CamelReactiveStreamsService camel = CamelReactiveStreams.get(context);

// Process files starting from their names
Flowable.just(new File("file1.txt"), new File("file2.txt"))
    .flatMap(file -> camel.toStream("readAndMarshal", String.class))
    // Camel output will be converted to String
    // other steps
    .subscribe();

이 기능이 작동하려면 Camel 컨텍스트에서 다음과 같은 경로를 정의해야 합니다.

from("reactive-streams:readAndMarshal")
.marshal() // ... other details

272.7.1. 직접 API를 사용하여 Camel로 변환 요청

대체 방법은 반응 흐름에서 직접 URI 엔드포인트를 사용하는 것입니다.

CamelReactiveStreamsService camel = CamelReactiveStreams.get(context);

// Process files starting from their names
Flowable.just(new File("file1.txt"), new File("file2.txt"))
    .flatMap(file -> camel.to("direct:process", String.class))
    // Camel output will be converted to String
    // other steps
    .subscribe();

toStream 대신 to() 메서드를 사용하는 경우 "reactive-streams:" 엔드포인트를 사용하여 경로를 정의할 필요가 없습니다(후드에서 사용됨).

이 경우 Camel 변환은 다음과 같이 가능합니다.

from("direct:process")
.marshal() // ... other details