Apache Camel - 停止执行并显示 return 失败消息

Apache Camel - stop execution and return with a failure message

我正在寻找一个集成框架。猜猜我找到了一个——Apache Camel。这个框架很酷。但是对于我的一个要求,我无法按正确的顺序放置组件。该要求有以下阶段 -

Authentication
Authorization
PreProcessing etc.

所以当请求到来时,我需要进行身份验证、授权、预处理等。问题是这些步骤中的每一个都可能失败,因此我不希望执行流程继续,而应该 return 返回有一些失败信息。 我正在尝试这种类型的东西 -

from("jetty").choice().
when(Auth.isAuthenticated()).
       // proceed to authorization
       // proceed to preprocessing 
otherwise()
      // do something
endChoice();

但这里的问题是授权阶段也可能失败,那么预处理步骤不应执行,授权阶段本身应该 return 失败消息。可能吗?

是的,这是标准的 Camel 错误处理。 请参阅错误和异常处理文档。 https://camel.apache.org/exception-clause.html

  1. 授权阶段出现问题。很好抛出异常。
  2. 您有一个 OnException,该异常会根据该异常触发,然后采取一些措施。您可以记录、重试或将消息发送到另一个路由,该路由可以将其放在 ActiveMQ 上的死信队列中。

我可能会做的另一件事是将您的功能拆分到不同的路径中。将身份验证、授权和预处理放在不同的路由中。这样做的一大好处是它们不相互依赖,因此需要此功能的其他流程可以简单地调用路由,您可以重用它们。此外,如果身份验证出现问题,则消息永远不会到达身份验证路由等。