Как установить тайм-аут на маршруте верблюжьего сервлета - PullRequest
0 голосов
/ 25 марта 2020

Я хочу установить тайм-аут на маршруте сервлета.

public class MyCamelRoute extends RouteBuilder {


    @Override
    public void configure() throws Exception {
        restConfiguration()
                .component("servlet")
                .enableCORS(true)
                .contextPath("/")
                .bindingMode(RestBindingMode.json);
        onException(IOException.class)
                    .handled(true)
                    .process(bean:handleProcess);

        rest("/get").get(/user).to("direct:getusers");
        from("direct:getusers")
                .prpcess(bean:exchangeProcess)
                .to("http4:xx:8080/getuser?httpClient.connectTimeout=1000&bridgeEndpoint=true")
                .process(xxx)
                .to(xxxx)....
;

Если кто-то вызовет GET ../ get / user займет слишком много времени, эта служба отменит сам запрос. например, время ожидания подключения и время ожидания возврата, назначьте код состояния 504.

Я не знаю, как это сделать или какой-либо другой вариант, который я могу использовать или изменить.

Может ли кто-нибудь помочь мне с это? Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Вы можете попытаться добавить эти.

connectionRequestTimeout

connectTimeout

[https://camel.apache.org/components/2.x/http4-component.html] [1]

0 голосов
/ 25 марта 2020

Вы уже используете httpClient.connectTimeout=1000, попробуйте добавить httpClient.soTimeout=100 к URI для тайм-аута запроса (тайм-аута сокета) 100 мс

Если тайм-аут достигнут, базовый httpClient, вероятно, выдает исключение, которое вы может справиться с предложением Camel Exception.

onException(WhateverExceptionOccursOnTimeout.class)...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...