【问题标题】:Apache Camel - stop execution and return with a failure messageApache Camel - 停止执行并返回失败消息
【发布时间】:2015-11-22 17:22:50
【问题描述】:

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

Authentication
Authorization
PreProcessing etc.

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

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

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

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2018-03-19
      • 1970-01-01
      相关资源
      最近更新 更多