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

Apache Camel JMS异常循环

慕弘义
2023-03-14
camelVersion = "2.19.1"
springVersion = "4.1.5.RELEASE"
jdk = "1.8"

正在使用Apache Camel JMS、XA事务(atomikos)和Java/Spring。添加了一些代码来处理camel路由和业务逻辑处理过程中可能发生的异常,即使用OnException。下面是在我们进入一个问题之前的实际代码,在异常发生后,onException代码按照指定的数量像重试一样处理它;将控件发送到错误处理程序,然后继续循环,一次又一次地处理相同的消息,并在发生异常和重试失败时执行相同的操作。

onException(Exception.class)
.log("Exception caught")
.redeliveryDelay(redliveryDelay) //delay time
.setHeader("exception", simple("${exception}"))
.maximumRedeliveries(redelivery) //number of retries                
.process("errorHandler");

共有1个答案

燕禄
2023-03-14

经过一番研究;inOnly和inOut概念有助于提出下面的解决方案,以便第一次获得队列的消息,即如果发生异常,重试失败。

onException(Exception.class)
.log("Exception caught")
.redeliveryDelay(redliveryDelay)
.setHeader("exception", simple("${exception}"))
.maximumRedeliveries(redelivery)                    
.process("errorHandler")
.handled(true)
.inOnly();
 类似资料:
  • 问题内容: 我有这段代码。我想回到循环的起点,并再次要求用户输入。但是,它总是循环而不停止请求输入。我的代码有什么问题?谢谢 问题答案: 从http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt%28int%29: “如果翻译成功,则扫描程序将前进经过匹配的输入。” 啊,但是如果翻译是什么 不是 成功的?在这种

  • 问题内容: 我有一个对象,该对象具有对另一个对象的循环引用。考虑到这些对象之间的关系,这是正确的设计。 为了显示 不出所料,当我尝试使用Json序列化计算机或客户对象时遇到了一个问题。我不确定是如何解决此问题的,因为我不想破坏计算机和客户对象之间的关系。解决此问题有哪些选择? 编辑 目前,我正在使用Controller基类提供的Json方法。因此,我正在做的序列化基本如下: 问题答案: 更新: 不

  • 我试图处理一个用户输入,并允许只输入浮动。可以输入的浮点数是无限的,但是如果连续输入两个非浮点数,程序将结束。当程序结束时,它将打印所有数字的和。 问题是,每当我运行这个时,它立即运行while循环,将计数增加到2,并中断循环。在取消之前,您只能输入一个非浮点数。 编辑:正如你们中的一些人所指出的,count应该在while循环之前初始化

  • 问题内容: 在玩循环的同时创建了以下代码。下面的代码将斐波那契值存储到数组中,然后使用for循环将其打印出来。 上面的代码工作正常。但是,第一次将它们放在一起时,我使用了增强的for循环来打印出值(代码中的第二个for循环)。可以很好地编译,但是运行时得到以下信息: 我不明白出了什么问题。更改第二个循环不应更改值(您会注意到斐波那契值是错误的(即缺少值))。而且我不明白为什么简单的增强型for循环

  • 问题内容: 我的问题很简短。我不明白为什么我的程序在捕获错误时会无限循环。我做了一个新的try- catch语句,但是它循环了,甚至复制,粘贴并修改了以前有效的程序中的适当变量。下面是语句本身,下面是整个程序。谢谢您的帮助! 程序: 问题答案: 您的程序将永远运行,因为在不更改扫描仪状态的情况下进行调用会一次又一次地引发异常:如果用户未输入,则调用不会更改扫描仪的外观,因此,当您在下一次迭代中进行

  • 我在我的android应用程序中使用增强for循环来迭代状态对象列表。 这将生成以下IndexOutOfBoundsException:java。lang.IndexOutOfBoundsException:索引0无效,大小为0 我意识到这是因为ArrayList的大小是0,这意味着它是空的。我的问题是,为什么它一开始就进入了循环,而不是为了保证这些问题不会发生而创建的增强for,以及如何阻止它。