2016-06-28 3 views
2

Я использую WSO2 ESB 4.9.0 для вызова служебных вызовов с использованием блокирующего вызова. Я должен использовать блокирующий вызов из-за транзакции jms. Иногда сеть между ESB и backend-сервисом работает медленно, поэтому я хочу использовать таймаут для подключения, но с блокировкой тайм-аута вызова на конечной точке не работает. С неблокирующим таймаутом вызова работает нормально.WSO2 Время ожидания блокировки блокировки ESB

Возможно ли использовать таймаут с блокирующим звонком?

Спасибо за любые советы.

ответ

1

Как конечная точка ожидания не работает в блокирующем вызова Вы можете попробовать следующие два метода:

1) Глобальный тайм-аут, определенный в synapse.properties (файл ESB_HOME \ репозиторий \ конф). Это будет определять максимальное время ожидания обратного вызова в ESB для ответа на конкретный запрос.

Если ESB не получил ответа от Back End, оно отбросит сообщение и очистит обратный вызов. Это параметр глобального уровня, который влияет на все конечные точки, настроенные в ESB.

synapse.global_timeout_interval=120000 

2) тайм-аут сокет определяется в passthru-http.properties (файл ESB_HOME \ репозиторий \ конф).

Этот параметр примет решение о тайм-ауте, ожидающем ответа конкретного HTTP-запроса. Если ESB не получит никакого ответа от Back End в течение этого периода, HTTP-соединение будет выведено из строя, и это в конечном итоге вызовет ошибку тайм-аута на стороне ESB, и будут удалены обработчики ошибок.

http.socket.timeout=60000 
+0

'synapse.global_timeout_interval' не работает с блокирующим вызовом. 'http.socket.timeout' работает, но очень странно. Если сетевое соединение выполняется медленно, и для отправки запроса требуется больше, чем 'http.socket.timeout',' java.net.SocketTimeoutException' вызывается сразу после получения запроса сервером. Поэтому, если 100KB-запрос отправляется со скоростью 1KB/s, это займет 100 секунд, а SocketTimeoutException будет сброшено через 100 секунд, даже если значение http.socket.timeout будет ниже. – tyfyh

Смежные вопросы