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

基于消息的骆驼特定异常处理处理

蔺弘
2023-03-14

我有一个队列系统,骆驼只是其中的一小部分。在此队列系统中,对于某些队列,代理在队列已满时返回 FAIL。为了解决这个问题,我查看我得到的 JMS 异常,从消息中我可以看到原因是否是队列已满。

我想在Camel中实现的是,对于满队列的特定情况,我希望重试传递,而对于任何其他JMS异常(或任何其他异常),我希望将其发送到DLQ。

我假设我必须使用onException(JMSException.class)并提供一个自定义处理器来查看异常消息,但在这之后,我不确定该怎么做。在这种情况下,我尝试从处理器引发一个特定的自定义异常(例如QueueFailedException),并在安装程序中出现另一个onException(QueueFailed exception),但随后出现以下错误:

“(…)错误org.apache.camel.processor.FatalFallbackErrorHandler-尝试使用[Channel[DegateSync[org.eumetsat.gems.bridge.JmsMessageReplicator处理以前在exchangeId(…)上引发的异常时发生异常$JMSExceptionHandler@67a93d5f]]]. 上一个和新的异常将记录在下面。”

共有1个答案

长孙燕七
2023-03-14

据我所知,您需要告诉Camel,它必须考虑处理了异常,并且应该根据一些逻辑检查重试发送消息。。handled()除了布尔值之外,还接受谓词或表达式。

下面的章节难道不能帮助你实现这一点吗?

    < li >将异常标记为已处理 < li >使用retrywhile谓词进行细粒度重试。

我正在考虑您是否能够确定异常是否真的是由队列通过捕获的JMSExc的泛滥引起的。

 类似资料:
  • 我正在尝试从目录中选取一个文件,拆分一个文件,并将每一个拆分行添加到ActiveMQ中。我在这个过程中遇到了异常处理的问题。假设目录中的文件是一个二进制文件(可执行文件),那么splitter会显示org.apache.camel.runtimeCamelException和java.nio.charset.MalFormedInputException异常。如果出现这种情况,那么我需要捕获这些异

  • 在camel spring ws中,有没有办法将自定义主体(例如自定义bean)和http状态返回为500? 我试过了 然后在processor公共类ExceptionProcessor实现processor{ } 但是即使身体是我想要的,超文本传输协议状态总是200。 你能帮我吗? 更多信息:我正在使用camel 2.20.2版

  • 前言 在封装创建request的时候会调用handleProduceResponse(),这个里面会调用 有异常并且可以重试,执行第一个分支,会调用 有异常但是不可以重试,执行第二个分支,会调用

  • 我有一个资源类,它本身与内部服务进行对话。此资源充当服务的rest API。服务层可以抛出意外异常,因此资源应该处理那些已处理的意外异常并将其记录下来。我正在使用dropwizard框架,它反过来又使用jersey。事情是这样的。 这里的问题是,我必须对每个REST apiendpoint执行完全相同的异常处理。我可以为这个特定的资源进行某种类型的异常映射,以便将所有的处理逻辑和日志记录放在那里吗

  • 我希望捕捉一些jackson异常,这些异常发生在我正在开发的spring-boot API中。例如,我有下面的request类,我想捕获当JSON request对象中的“QuarmissionAireResponse”键为null或空白(即request对象中的)时发生的错误。 导致此Jackson错误: 是否有一种方法来捕获和处理这些异常(在示例中JsonRootName是null/inval

  • 本文向大家介绍Java异常处理的基础,包括了Java异常处理的基础的使用技巧和注意事项,需要的朋友参考一下 异常-这意味着异常错误。实际上,异常用于处理程序执行期间发生的程序错误。 您可以使用以下关键字在程序中实现异常处理: try -此块在JRE捕获一系列错误,并将其扔到catch块。 catch-捕获try {}块引发的错误。 throw-抛出关键字用于显式或手动抛出异常。 throws-用于