Верблюжий http4 маршрут в потоке с таймаутом - PullRequest
3 голосов
/ 15 июля 2011

Я бы хотел использовать маршрут http4, но он должен выполняться внутри потока с таймаутом. У меня уже есть настройка маршрута http4, что-то вроде этого:

from("direct:start")
.setHeader(Exchange.HTTP_QUERY,simple("format=json&count=${in.headers.count}"))
.to("http4://www.host.com/someapi")
.unmarshal().json(JsonLibrary.JACKSON,MyResponseType.class)
.to("bean:SomeBean?method=echo");

Я бы хотел применить тайм-аут на 100 мс вокруг вызова http и в этом случае направить к обработчику ошибок. Кто-нибудь знает, как это можно сделать?

Ответы [ 2 ]

4 голосов
/ 16 июля 2011

Вы можете установить тайм-аут на 100 мс на клиенте, указав http4://foo?httpClient.soTimeout=100. Когда происходит тайм-аут, он, вероятно, сгенерирует исключение, которое вы можете обработать следующим образом (вне головы, непроверенный код):

onException(IOException.class).to("direct:timeouts");

from("direct:start")
.setHeader(Exchange.HTTP_QUERY,simple("format=json&count=${in.headers.count}"))
.to("http4://www.host.com/someapi?httpClient.soTimeout=100")
.unmarshal().json(JsonLibrary.JACKSON,MyResponseType.class)
.to("bean:SomeBean?method=echo");

from("direct:timeouts").to("...");
0 голосов
/ 16 июля 2011

Список получателей EIP поддерживает тайм-аут http://camel.apache.org/recipient-list.html

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