Apache Camel#2——调用 Rest API

这是有关Apache Camel的第二篇文章,将来还会有更多。 本文的目的是向人们展示Camel的真正威力,也许有些人会找到一个用例,在这个用例中可以使用这个框架,而不是一遍又一遍地编写样板代码。

今天,我们将使用Camel调用API端点并处理某些异常。

依存关系

Camel http的依赖

路线

调度器的路线

如果你还记得introduction中的介绍,这是一个调度器路由,它将每120秒触发一条消息,并将其发送到“direct:httpRoute”路由。我使用同步的“直接”组件,也有异步的“seda”组件。

@Override"
public void configure() {

from("timer:scheduler?period=120000")
.log("Scheduled job!")
.to("direct:httpRoute");

}

Http路由

这是一条HTTP客户端路由,它将调用bittrex rest API,并获取加密货币并记录响应。

@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}");

}

错误处理程序

如果您想涵盖一些例外情况,则有两个选择。

  1. 默认错误处理程序
  2. onException子句处理特定的类异常。

@Override 公共无效的configure(){

@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}");

}

结果

Apache Camel#2——调用 Rest API_第1张图片

这是本教程的全部内容,如果不清楚,请随时与我联系,我将很乐意回答任何问题。

谢谢!

原文链接: https://dev.to//djoleb/apache-camel-calling-rest-api-25en

你可能感兴趣的:(Apache Camel#2——调用 Rest API)