当前位置: 首页 > 知识库问答 >
问题:

Camel-如何在异常时强制拆分器停止并与异常一起返回聚合结果

梁丘波
2023-03-14

如何使用camel实现此过程:

>

处理每个拆分项目

聚合结果

如果发生异常:

停止拆分

返回异常前所有项目的聚合结果以及异常信息

在split上定义.stopOneException(),我可以在没有聚合结果的情况下停止进程并输出异常信息。

是否可以通过处理聚合策略强制拆分器中的异常来停止处理所有剩余项目?

共有1个答案

任云瀚
2023-03-14

我相信你说的是分割交易所在例外情况下被终止。

在camel 2.2中,您的子交换将得到处理,如果有任何异常,还将处理进一步的消息,在聚合中,您可以查看/分析这一点。

.stopOnExceptions(false)

Camel 2.2:在发生异常时是否立即停止继续处理。如果禁用,则Camel将继续拆分并处理子消息,无论其中一个子消息是否失败。您可以在AggregationStrategy类中处理异常,您可以完全控制如何处理。

 类似资料:
  • 我们在Camel中定义了一个具有拆分和聚合功能的路由,但无法在聚合器之后将异常传播回拆分。这导致即使我们遇到异常,拆分也会运行 下面是不工作的代码 上述代码中的处理器(myProcessor)如下: 但是,当我从路由中移除聚合时,Split能够在异常情况下停止路由。

  • 我有一条处理hl7消息的骆驼路线。处理成功后,我希望将其传递给另一个endpointb以进行进一步处理。 但是如果在processHL7中发生任何异常,我有一个catch块来做一些处理。当我进入doCatch并遇到end时,我想停止处理,但这并没有发生。无论发生什么,流都将到达endpointb。当我进入doCatch块时,如何停止?

  • 我想对3条路由使用Apache Camel并行组播,聚合(并等待)其中的2条路由,而让第3条路由自行进行(第3条路由不应阻塞前两条路由)。我还需要在“所有”情况下处理这两个,这意味着如果其中一个失败(例如在处理过程中抛出异常),也应该对其进行聚合。 根据我从Camel文档中了解到的情况,只要不指定StoponException,该行为就应该是“默认的”。但发生的情况是exchange异常永远不会到

  • 我在camelcontext.xml文件的主路由中配置了camel循环,它将调用请求处理路由3次。我还配置了onException xml处理程序(将handled设置为true)。但是,当第一次迭代出现异常时,执行控制会转到onException块,但是循环不会停止处理,相反,其他两次迭代(第二次和第三次)也会发生。

  • 我在我的骆驼分裂()路线中有一个聚合策略。 splitMessage方法已将数据拆分为3个请求数据。因此,我将点击http目标endpoint3次。 使用聚合策略,我的http响应在前2次被聚合。 第三次http调用因异常而失败。返回给调用者的交换不包含前两个分组交换。 在这种情况下,我如何获得分组交换(成功,异常)。 如果问题不清楚,请告诉我。

  • 问题内容: 是否可以 在调试时 强制抛出异常。 让我举一个例子:我正在调试一些代码,这些代码是我从互联网上下载页面的地方。当Internet连接断开或网卡断开时,应抛出IOException,但执行会被阻止(在第二行) 我需要一种在代码阻塞时 在调试 时强制引发异常的方法,以便可以跳转到catch块。 我正在使用netbeans BTW。 While Debugging =执行线程暂停时手动添加。