gpt4 book ai didi

exception - Camel : onException vs. 拦截SendToEndpoint

转载 作者:行者123 更新时间:2023-12-03 07:55:12 26 4
gpt4 key购买 nike

我在 JPA 中使用 Camel 2.10。
在我的上下文中,我有 2 条路线。
路由 1 从 JPA 端点(db 表)消费,进行一些处理(在 bean 中),然后将消息转发到路由 2。如果在处理过程中出现问题,bean 返回 NULL。

我想在路由 2 中做的第一件事是检查正文(从路由 1 转发)是否不为 NULL。
因此,我看到了两种可能性:
1)在路线2中使用验证

<route id="route2">
...
<validate>
<simple>${body} != null</simple>
</validate>

2)使用interceptSendToEndpoint来避免NULL消息被发送到路由2:
<interceptSendToEndpoint uri="toRoute2" skipSendToOriginalEndpoint="true">
<when><simple>${body} == null</simple></when>
<transform>
<constant>Error Message</constant>
</transform>
<to uri="direct:logError"/>
</interceptSendToEndpoint>

你认为更好的方法是什么?

谢谢你的建议!

BR
马蒂亚斯

最佳答案

好吧,这是接口(interface)的问题。

如果 NULL 有效负载被认为是错误,我会改为抛出异常。通常通过修改处理 bean 和 throw new RuntimeException("some error msg");而不是 return null; .如果不可能,您总是可以将 bean 包装在另一个抛出的 bean 中,而不是返回 null - 或者基本上做您在 1 中所做的事情。如果您想做一些错误记录等,异常也会挂接到正常的错误处理程序中。

使用拦截可能非常强大,但也会使路线不那么明显 - 当您在几年后重新访问代码时。对于这样一个简单的场景来说,这有点矫枉过正。

关于exception - Camel : onException vs. 拦截SendToEndpoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13345251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com