242장. Netty4 HTTP Component
Camel 버전 2.14에서 사용 가능
netty4-http 구성 요소는 Netty4 를 사용하여 HTTP 전송에 충돌하는 Netty4 구성 요소에 대한 확장입니다.
이 camel 구성 요소는 생산자 및 소비자 끝점을 모두 지원합니다.
Netty는 스트림을 기반으로 하며, 수신한 입력이 Camel에 스트림으로 제출됨을 의미합니다. 즉, 스트림 내용을 한 번만 읽을 수 있습니다.
Netty4 HTTP는 전체 http 메시지를 빌드하기 위해 io.netty.handler.codec.http.HttpObjectAggregator
를 사용하여 전체 스트림을 메모리에 읽습니다. 그러나 결과 메시지는 여전히 한 번 읽을 수 있는 스트림 기반 메시지입니다.
메시지 본문이 비어 있거나 데이터에 여러 번 액세스해야 하는 경우(예: 멀티 캐스트링 또는 복구 오류 처리) 스트림 캐싱을 사용하거나 메시지 본문을 여러 번 다시 읽을 수 있는 문자열로 변환합니다.
Maven 사용자는 이 구성 요소의 pom.xml
에 다음 종속성을 추가해야 합니다.
InputStream
을 메시지 본문으로 사용하고 큰 데이터 스트림을 쓰거나 읽으려는 경우 (예: > 2GB) disableStreamCache
매개변수를 true
로 설정하여 스트리밍 지원을 사용해야 합니다.
예 1: 서버에 대규모 데이터 스트림 업로드
예 2: 서버에서 큰 데이터 스트림 다운로드
다운로드 예제에서는 기본 스트림 처리기를 차단하지 않으려면 다른 스레드의 InputStream
에서 읽고 있어야 합니다( AsyncProcessStream
참조).
242.1. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
netty 구성 요소의 URI 스키마는 다음과 같습니다.
netty4-http:http://0.0.0.0:8080[?options]
netty4-http:http://0.0.0.0:8080[?options]
?option=value&option=value&… 형식의 URI에 쿼리 옵션을
추가할 수 있습니다.
쿼리 매개변수 vs 끝점 옵션. Camel에서 URI 쿼리 매개변수 및 끝점 옵션을 인식하는 방법에 대해 우려할 수 있습니다. 예를 들어 다음과 같이 엔드포인트 URI를 생성할 수 있습니다 - netty4-http:http//example.com?myParam=myValue&compression=true
. 이 예에서 myParam
은 HTTP 매개변수이며 압축
은 Camel 엔드포인트 옵션입니다. 이러한 상황에서 Camel에서 사용하는 전략은 사용 가능한 엔드포인트 옵션을 해결하고 URI에서 제거하는 것입니다. 즉, Netty HTTP 프로듀서에서 끝점으로 보낸 HTTP 요청은 대상 URL에서 압축
끝점 옵션이 해결되고 제거되므로 http//example.com?myParam=myValue
와 같습니다. 동적 헤더(예: CamelHttpQuery
)를 사용하여 끝점 옵션을 지정할 수도 없습니다. 끝점 옵션은 엔드포인트 URI 정의 수준에서만 지정할 수 있습니다(예: DSL 요소와 유사).