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
- 授权阶段出现问题。很好抛出异常。
- 您有一个 OnException,该异常会根据该异常触发,然后采取一些措施。您可以记录、重试或将消息发送到另一个路由,该路由可以将其放在 ActiveMQ 上的死信队列中。
我可能会做的另一件事是将您的功能拆分到不同的路径中。将身份验证、授权和预处理放在不同的路由中。这样做的一大好处是它们不相互依赖,因此需要此功能的其他流程可以简单地调用路由,您可以重用它们。此外,如果身份验证出现问题,则消息永远不会到达身份验证路由等。
我正在寻找一个集成框架。猜猜我找到了一个——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
- 授权阶段出现问题。很好抛出异常。
- 您有一个 OnException,该异常会根据该异常触发,然后采取一些措施。您可以记录、重试或将消息发送到另一个路由,该路由可以将其放在 ActiveMQ 上的死信队列中。
我可能会做的另一件事是将您的功能拆分到不同的路径中。将身份验证、授权和预处理放在不同的路由中。这样做的一大好处是它们不相互依赖,因此需要此功能的其他流程可以简单地调用路由,您可以重用它们。此外,如果身份验证出现问题,则消息永远不会到达身份验证路由等。