Привет!
Это второй текст об Apache Camel, в будущем их будет намного больше. Цель этой статьи – показать людям реальную мощь Camel, возможно, некоторые из вас найдут вариант использования, в котором вы сможете использовать этот фреймворк вместо того, чтобы снова и снова писать шаблонный код.
Сегодня мы будем использовать Camel для вызова конечной точки API и обработки некоторых исключений.
Зависимости
Зависимость Camel от http
Маршруты
Маршрут планировщика
Если вы помните из введение , это маршрут планировщика, он будет запускать сообщение каждые 120 секунд и отправлять его по маршруту “direct: HttpRoute”. Я использую синхронный “прямой”/| компонент, есть также асинхронный “седа” компонент.
@Override" public void configure() { from("timer:scheduler?period=120000") .log("Scheduled job!") .to("direct:httpRoute"); }
Http-маршрут
Это маршрут HTTP-клиента, он вызовет rest API bittrex, получит криптовалюты и зарегистрирует ответ.
@Override public void configure() { from("direct:httpRoute") .log("Http Route started") .setHeader(Exchange.HTTP_METHOD).constant(HttpMethod.GET) .to("https://api.bittrex.com/api/v1.1/public/getcurrencies") .log("Response : ${body}"); }
Обработчики ошибок
Если вы хотите охватить некоторые исключения, есть два варианта.
- Обработчик ошибок по умолчанию
- Предложение onException для обработки исключений определенного класса.
@Override public void configure() {
errorHandler(deadLetterChannel("mock:errorHandler")); onException(HttpOperationFailedException.class) .log("${exception}") .to("mock:errorHandler"); from("direct:httpRoute") .log("Http Route started") .setHeader(Exchange.HTTP_METHOD).constant(HttpMethod.GET) .to("https://api.bittrex.com/api/v1.1/public/getcurrencies") .log("Response : ${body}"); }
Результаты
Это все для этого урока, если что-то непонятно, не стесняйтесь обращаться ко мне, я с радостью отвечу на любой вопрос.
Спасибо!
Оригинал: “https://dev.to/djoleb/apache-camel-calling-rest-api-25en”