272.7. Camel로 변환 요청

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

다음 스니펫에서는 RxJava 기능 코드가 파일을 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