2016-06-28 4 views
2

차단 호출을 사용하여 백엔드 서비스 호출에 WSO2 ESB 4.9.0을 사용하고 있습니다. jms 트랜잭션 때문에 블로킹 호출을 사용해야합니다. 때로는 ESB와 백엔드 서비스 간의 네트워크가 느려서 연결시 제한 시간을 사용하려고하지만 엔드 포인트에서 통화 시간 제한을 차단하면 작동하지 않습니다. 넌 블로킹 콜 타임 아웃이 잘 작동합니다.WSO2 ESB 차단 호출 시간 초과

차단 호출과 함께 시간 초과를 사용할 수 있습니까?

모든 정보 주셔서 감사합니다.

답변

1

엔드 포인트 타임 아웃이 두 ​​가지 방법은 다음 시도 할 수 전화 차단에서 작동하지 않는 것처럼 : synapse.properties에 정의

1) 글로벌 타임 아웃 (ESB_HOME \ 저장소 \ conf의) 파일을. 이것은 특정 요청에 대한 응답을 위해 콜백이 ESB에서 대기하는 최대 시간을 결정합니다.

ESB가 백 엔드에서 응답을받지 못하면 메시지를 삭제하고 콜백을 지 웁니다. 이것은 ESB에 구성된 모든 엔드 포인트에 영향을 미치는 전역 레벨 매개 변수입니다. passthru-http.properties (ESB_HOME \ 저장소 \의 conf) 파일에 정의

synapse.global_timeout_interval=120000 

2) 소켓 초과.

이 매개 변수는 특정 http 요청이 응답을 기다리는 시간 제한을 결정합니다. 이 기간 동안 ESB가 백 엔드로부터 응답을받지 못하면 HTTP 연결이 시간 초과되어 결국 ESB 측에서 시간 초과 오류가 발생하고 오류 처리기가 중단됩니다.

http.socket.timeout=60000 
+0

'synapse.global_timeout_interval'은 (는) 블로킹 호출과 함께 작동하지 않습니다. 'http.socket.timeout'은 작동하지만 매우 이상합니다. 네트워크 연결이 느리고 요청을 보내기 위해'http.socket.timeout'보다 오래 걸리면 서버가 요청을 수신 한 직후에'java.net.SocketTimeoutException'이 발생합니다. 따라서 100KB 요청이 1KB/s 속도로 전송되면 100 초가 걸리고 http.socket.timeout 값이 더 낮더라도 100 초 후에 SocketTimeoutException이 발생합니다. – tyfyh