11장. 대기 웹 소켓 구성 요소
Camel 버전 2.14로 사용 가능
대기 시간: 구성 요소는 Websocket을 통해 외부 클라이언트와 통신하는 서블릿에 대해 Websocket 기반 엔드포인트를 제공합니다(외부 클라이언트의 웹 소켓 연결을 수락하는 서블릿).
구성 요소는 SERVLET 구성 요소를 사용하며 Atmosphere 라이브러리를 사용하여 다양한 서블릿 컨테이너(예: Jetty, Tomcat, …에서 Websocket 전송)를 지원합니다.
포함된 Jetty 서버를 시작하는 Websocket 구성 요소와 달리 이 구성 요소는 컨테이너의 서블릿 공급자를 사용합니다.
Maven 사용자는 이 구성 요소를 위해 다음 종속성을 pom.xml
에 추가해야 합니다.
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-atmosphere-websocket</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
11.1. 대기 시간-웹 소켓 옵션
Atmosphere Websocket 구성 요소는 아래 나열된 9가지 옵션을 지원합니다.
이름 | 설명 | 기본값 | 유형 |
---|---|---|---|
서블릿 이름 (consumer) | 사용할 서블릿의 기본 이름입니다. 기본 이름은 CamelServlet입니다. | CamelServlet | 문자열 |
httpRegistry (consumer) | 사용자 지정 org.apache.camel.component.servlet.HttpRegistry를 사용합니다. | HttpRegistry | |
attachmentMultipart Binding (consumer) | Camel Exchange의 첨부 파일로 multipart/form-data를 자동 바인딩할지 여부입니다. attachment attachmentMultipartBinding=true 및 disableStreamCache=false 옵션이 함께 작동할 수 없습니다. AttachmentMultipartBinding을 사용하려면 disableStreamCache를 제거합니다. Servlet을 사용할 때 이를 활성화하려면 서블릿별 구성이 필요할 수 있으므로 기본적으로 이 기능이 꺼집니다. | false | boolean |
fileNameExtWhitelist (consumer) | 업로드된 파일을 수락하기 위해 허용된 파일 이름 확장자의 허용 목록. txt,xml과 같은 여러 확장 기능을 쉼표로 구분할 수 있습니다. | 문자열 | |
httpBinding (advanced) | 사용자 지정 HttpBinding을 사용하여 Camel 메시지와 HttpClient 간의 매핑을 제어합니다. | HttpBinding | |
httpConfiguration (advanced) | 공유 HttpConfiguration을 기본 구성으로 사용하려면 다음을 수행합니다. | HttpConfiguration | |
JavaSerialized Object (advanced) 허용 | 요청이 context-type=application/x-java-serialized-object를 사용할 때 java serialization을 허용할지 여부입니다. 이 설정은 기본적으로 꺼져 있습니다. 이를 활성화하면 Java가 요청에서 Java로 들어오는 데이터를 역직렬화하고 잠재적인 보안 위험이 될 수 있다는 점에 유의하십시오. | false | boolean |
headerFilterStrategy (filter) | 사용자 지정 org.apache.camel.spi.HeaderFilterStrategy를 사용하여 Camel 메시지로 헤더를 필터링하려면 다음을 수행합니다. | HeaderFilterStrategy | |
resolveProperty Placeholders (advanced) | 구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
Atmosphere Websocket 끝점은 URI 구문을 사용하여 구성됩니다.
atmosphere-websocket:servicePath
다음 경로 및 쿼리 매개변수를 사용합니다.
11.1.1. 경로 매개 변수 (1 매개변수):
이름 | 설명 | 기본값 | 유형 |
---|---|---|---|
servicePath | 필수 websocket 엔드 포인트 이름 | 문자열 |
11.1.2. 쿼리 매개변수(38 매개변수):
이름 | 설명 | 기본값 | 유형 |
---|---|---|---|
청크됨 (공용) | 이 옵션이 false이면 Servlet은 HTTP 스트리밍을 비활성화하고 응답에 Content-length 헤더를 설정합니다. | true | boolean |
disableStreamCache (common) | Servlet의 원시 입력 스트림이 캐시되었거나 그렇지 않은지 여부를 결정합니다. (Camel은 스트림을 메모리/오버 흐름에서 파일, 스트림 캐싱) 캐시로 스트림을 읽습니다. 기본적으로 Camel은 Servlet 입력 스트림을 캐시하여 Camel이 스트림에서 모든 데이터를 검색할 수 있도록 여러 번 읽을 수 있도록 지원합니다. 그러나 예를 들어 파일 또는 기타 영구 저장소로 직접 스트리밍하는 것과 같은 원시 스트림에 액세스해야 할 때 이 옵션을 true로 설정할 수 있습니다. DefaultHttpBinding은 요청 입력 스트림을 스트림 캐시에 복사하고 스트림을 여러 번 읽는 것을 지원하기 위해 이 옵션이 false인 경우 메시지 본문에 배치합니다. Servlet을 사용하여 끝점을 프록시하는 경우 메시지 페이로드를 여러 번 읽을 필요가 없는 경우 이 옵션을 사용하여 성능을 향상시킬 수 있습니다. http/http4 생산자는 기본적으로 응답 본문 스트림을 캐시합니다. 이 옵션을 true로 설정하면 생산자가 응답 본문 스트림을 캐시하지 않지만 응답 스트림을 메시지 본문으로 사용합니다. | false | boolean |
headerFilterStrategy (common) | 사용자 지정 HeaderFilterStrategy를 사용하여 Camel 메시지와의 헤더를 필터링합니다. | HeaderFilterStrategy | |
sendToAll (일반) | 모든 (브로드캐스트)로 보내거나 단일 수신자에게 보낼지 여부입니다. | false | boolean |
transferException (일반) | 활성화된 경우 소비자 측에서 Exchange 실패 처리 및 원인 Exception이 다시 직렬화 된 응답에서 응답에서 애플리케이션/x-java-serialized-object 콘텐츠 유형으로 다시 전송되었습니다. 생산자 측에서 예외는 HttpOperationFailedException 대신 is로 deserialize되고 throw됩니다. 원인된 예외는 직렬화해야 합니다. 이 설정은 기본적으로 꺼져 있습니다. 이를 활성화하면 Java가 요청에서 Java로 들어오는 데이터를 역직렬화하고 잠재적인 보안 위험이 될 수 있다는 점에 유의하십시오. | false | boolean |
UseStreaming (common) | 스트리밍이 여러 개의 텍스트 조각으로 데이터를 보낼 수 있도록 합니다. | false | boolean |
httpBinding (일반) | 사용자 지정 HttpBinding을 사용하여 Camel 메시지와 HttpClient 간의 매핑을 제어합니다. | HttpBinding | |
async (consumer) | 비동기 모드에서 작동하도록 소비자 구성 | false | boolean |
bridgeErrorHandler (consumer) | 소비자를 Camel 라우팅 오류 처리기에 브리징할 수 있습니다. 이는 소비자가 들어오는 메시지를 선택하는 동안 예외가 발생한 것을 의미하며, 이제 메시지로 처리되어 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | false | boolean |
httpMethodRestrict (consumer) | HttpMethod가 GET/POST/PUT 등과 같은 경우에만 사용할 수 있도록 하는 데 사용됩니다. 여러 메서드를 쉼표로 구분하여 지정할 수 있습니다. | 문자열 | |
matchOnUriPrefix (consumer) | 정확한 일치 항목이 없는 경우 소비자가 URI 접두사와 일치하여 대상 소비자를 찾아야 하는지 여부입니다. | false | boolean |
responseBufferSize (consumer) | javax.servlet.ServletResponse에서 사용자 정의 버퍼 크기를 사용하려면 다음을 수행합니다. | 정수 | |
서블릿 이름 (consumer) | 사용할 서블릿의 이름입니다. | CamelServlet | 문자열 |
attachmentMultipartBinding (consumer) | Camel Exchange의 첨부 파일로 multipart/form-data를 자동 바인딩할지 여부입니다. attachment attachmentMultipartBinding=true 및 disableStreamCache=false 옵션이 함께 작동할 수 없습니다. AttachmentMultipartBinding을 사용하려면 disableStreamCache를 제거합니다. Servlet을 사용할 때 이를 활성화하려면 서블릿별 구성이 필요할 수 있으므로 기본적으로 이 기능이 꺼집니다. | false | boolean |
eagerCheckContentAvailable (consumer) | content-length 헤더가 0인지 아니면 존재하지 않는 경우 HTTP 요청에 콘텐츠가 있는지 확인할 수 있습니다. HTTP 클라이언트가 스트리밍된 데이터를 전송하지 않는 경우 이 기능을 설정할 수 있습니다. | false | boolean |
예외 처리기 (consumer) | 소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션은 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다. | ExceptionHandler | |
exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
fileNameExtWhitelist (consumer) | 업로드된 파일을 수락하기 위해 허용된 파일 이름 확장자의 허용 목록. txt,xml과 같은 여러 확장 기능을 쉼표로 구분할 수 있습니다. | 문자열 | |
optionsEnabled (consumer) | Servlet 소비자에 대해 HTTP 옵션 사용 여부를 지정합니다.Specifies whether to enable HTTP OPTIONS for this Servlet consumer. 기본적으로 옵션 설정은 해제되어 있습니다.By default, OPTIONS is turned off. | false | boolean |
traceEnabled (consumer) | 이 서블릿 소비자에 대해 HTTP TRACE를 활성화할지 여부를 지정합니다.Specifies whether to enable HTTP TRACE for this Servlet consumer. 기본적으로 TRACE가 해제됩니다.By default, TRACE is turned off. | false | boolean |
bridgeEndpoint (producer) | 옵션이 true인 경우 HttpProducer는 Exchange.HTTP_URI 헤더를 무시하고 요청 끝점의 URI를 사용합니다. 또한 causesExceptionOnFailure 옵션을 false로 설정하여 HttpProducer가 모든 오류 응답을 다시 보낼 수 있습니다. | false | boolean |
connectionClose (producer) | Connection Close 헤더를 HTTP 요청에 추가해야 하는지 여부를 지정합니다. 기본적으로 연결 Close는 false입니다. | false | boolean |
copyHeaders (producer) | 이 옵션이 true이면 IN 교환 헤더가 복사 전략에 따라 OUT 교환 헤더에 복사됩니다. 이를 false로 설정하면 HTTP 응답의 헤더만 포함할 수 있습니다( IN 헤더를 전파하지 않음). | true | boolean |
httpMethod (producer) | 사용할 HTTP 메서드를 구성합니다. HttpMethod 헤더가 설정된 경우 이 옵션을 재정의할 수 없습니다. | HttpMethods | |
ignoreResponseBody (producer) | 이 옵션이 true이면 http 생산자가 응답 본문을 읽지 않고 입력 스트림을 캐시합니다. | false | boolean |
preserveHostHeader (producer) | 옵션이 true인 경우 HttpProducer는 현재 교환 호스트 헤더에 포함된 값으로 Host 헤더를 설정합니다. 다운스트림 서버에서 수신한 Host 헤더가 업스트림 클라이언트에서 호출한 URL을 반영하려는 역방향 프록시 애플리케이션에서 유용한 경우 호스트 헤더를 사용하여 프록시된 서비스에 대한 정확한 URL을 생성할 수 있습니다. | false | boolean |
throwExceptionOnFailure (producer) | 원격 서버에서 응답이 실패한 경우 HttpOperationFailedException throw를 비활성화하는 옵션입니다. 이를 통해 HTTP 상태 코드와 관계없이 모든 응답을 얻을 수 있습니다. | true | boolean |
cookieHandler (producer) | HTTP 세션을 유지 관리하도록 쿠키 처리기 구성 | CookieHandler | |
okStatusCodeRange (producer) | 상태 코드는 성공 응답으로 간주됩니다. 값이 포함됩니다. 여러 범위를 쉼표로 구분하여 정의할 수 있습니다(예: 200-204,209,301-304). 각 범위는 단일 숫자 또는 대시가 포함된 from-to여야 합니다. | 200-299 | 문자열 |
urlRewrite (producer) | 더 이상 사용되지 않는 사용자 지정 org.apache.camel.component.http.UrlRewrite를 통해 URL을 브리지/proxy 엔드포인트에서 다시 작성할 수 있습니다. 자세한 내용은 http://camel.apache.org/urlrewrite.html에서 참조하십시오. | UrlRewrite | |
mapHttpMessageBody (advanced) | 이 옵션이 true이면 교환의 IN 교환 본문이 HTTP 본문에 매핑됩니다. 이를 false로 설정하면 HTTP 매핑이 발생하지 않습니다. | true | boolean |
mapHttpMessageFormUrl EncodedBody (advanced) | 이 옵션이 true이면 교환의 양식 코딩된 본문이 HTTP에 매핑됩니다.If this option is true, IN exchange Form Encoded body of the exchange will be mapped to HTTP. 이를 false로 설정하면 HTTP 양식 Encoded 본문 매핑이 발생하지 않습니다. | true | boolean |
mapHttpMessageHeaders (advanced) | 이 옵션이 true이면 교환의 IN 교환 헤더가 HTTP 헤더에 매핑됩니다. 이를 false로 설정하면 HTTP 헤더 매핑이 발생하지 않습니다. | true | boolean |
synchronous (advanced) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
proxyAuthScheme (proxy) | 사용할 프록시 인증 스키마 | 문자열 | |
proxyHost (proxy) | 사용할 프록시 호스트 이름 | 문자열 | |
proxyPort (proxy) | 사용할 프록시 포트 | int | |
authHost (security) | NTML에서 사용할 인증 호스트 | 문자열 |