如何使用 Apache Camel 根据 HTTP 响应代码采取不同的操作

Jam*_*tti 0 java apache-camel

我正在使用 Apache Camel (2.15.x) HTTP4 组件并访问外部 Web 服务。有时回应是200,有时是422,有时是500。对于200s,我很好。我的问题是我想在获得时重试,500但在获得422. 在这两种情况下,它都是一个HttpOperationFailedException. 我查看了 Camel 文档并在 Google 上搜索过,但没有找到任何有关如何执行此操作的示例。任何建议或 URL,将不胜感激。

谢谢。

Sou*_*hti 5

您可以将其全部包装在类似于普通 java 的 try catch 表达式中,并使用 Camel dsl 来完成。

.doTry()
  .to("your_http_endpoint")
.doCatch(HttpOperationFailedException.class)
  .choice()
  .when(header(HTTP_RESPONSE_CODE).isEqualTo("500"))
    .to("do your retry or whatever you want to do")
  .otherwise()
    .to("somewhere_else when its not 500")
.end();
Run Code Online (Sandbox Code Playgroud)