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

Apache Camel-发生异常时的延迟

能烨华
2023-03-14

我需要做的是,当抛出异常时,我需要将处理延迟一段可配置的时间,比如15分钟。这将给服务器一些时间来稳定,而不是不必要地保持轮询。我正在使用骆驼的errorHandler机制,但它似乎不起作用。Camle不停地收到请求,没有任何延迟。请帮助解决这个问题。下面是束上下文快照:

<camel:onException>
        <camel:exception>java.lang.Exception</camel:exception>
        <camel:redeliveryPolicy backOffMultiplier="500" />
        <camel:log message="Default error handler was called"></camel:log>
    </camel:onException>
            <camel:route>
                <!--  Reading from REST url -->
                <camel:from uri="<my url>" />
                <!--  If else loop -->
                <camel:choice>
                    <camel:when>
                        <camel:xpath>Some path</camel:xpath>
                        <!--  Parsing OrderNumber and OrderVersion-->
                        <camel:log message="Recieved request ${headers.OrderNumber}-${headers.OrderVersion}.xml"/>
                        <camel:setHeader headerName="OrderNumber">
                            <xpath>Some path</xpath>
                        </camel:setHeader>
                        <camel:setHeader headerName="OrderVersion">
                            <camel:xpath>Some path</camel:xpath>
                        </camel:setHeader>
                        <!-- Request being put in file folder -->
                        <to
                            uri="file:data/inbox?fileName=${header.OrderNumber}-${header.OrderVersion}.xml"
                            pattern="InOut" />
                    </camel:when>
                    <!--  For all other requests put on  queue -->
                    <camel:otherwise>
                        <camel:log message="Request ${headers.OrderNumber}-${headers.OrderVersion}.xml directly sent to  queue"/>
                            <to uri="my queue"
                                pattern="InOut" />
                    </camel:otherwise>
                </camel:choice>
            </camel:route>
            <camel:route errorHandlerRef="errorHandler">
            <!-- Route to put message from folder to JMS queue if memory consumption is below limit-->
                <camel:from uri="file:data/inbox"/>
                    <camel:process ref="checkMemoryConsumption"/>
                    <camel:convertBodyTo type="String" />
                    <camel:log message="Sucessfully processing service order ${headers.OrderNumber}-${headers.OrderVersion}.xml"/>
                    <to uri="my queue"
                            pattern="InOut" />
            </camel:route>

共有1个答案

汝彭薄
2023-03-14

您是否尝试了RedeliveryDelay中的RedeliveryPolicyProfile

下面的策略配置文件将重试3次,每次尝试之间的延迟为1000ms。

<redeliveryPolicyProfile id="myRedeliveryProfile"
        maximumRedeliveries="3"
        redeliveryDelay="1000" allowRedeliveryWhileStopping="false"
        retryAttemptedLogLevel="INFO" />

请在此阅读更多信息

 类似资料:
  • 问题内容: 我有在Android上运行良好的代码。当我将其移植到具有JRE 1.6的Windows 64位计算机上时,该代码不起作用。 当我运行以下代码行时: 我得到以下异常: java.security.NoSuchAlgorithmException:SHA256 MessageDigest在java.security.MessageDigest.getInstance(未知源)处的java.

  • 我是Spring的新手。我正在使用SpringWebMVC开发RESTAPI。对于错误处理,我得到了这个链接http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann rest spring mvc异常 我曾尝试在我的项目中使用ResponseEntityExceptionHand

  • 以前有人遇到过这种例外吗?我曾尝试使用Spring和RabbitMQ部署一个应用程序,但是没有办法解释这个异常,谢谢~

  • 问题内容: 我正在使用以下时间戳格式: 以下方法可以正常工作: 而且,当我使用该格式字符串传递时间戳时,它返回,例如: 然后,我需要再次从该字符串映射到时间戳,本质上是相反的操作。我知道我可以使用和及其方法,但是如果可能的话,我宁愿坚持使用样式格式。 我写了这段代码(相当hacky),它适用于某些格式,但不适用于特定格式: 在第二部分,它失败了。 堆栈跟踪: 有没有一种更简单的方法可以在不利用我的

  • 我还更新了相关的XML文件,其中提到了spring security bean。我在用Postgres数据库。而且,在我的系统中,一切都运行良好,当我将这些更改提交到QA环境时,登录不工作。我在登录到应用程序时检查了日志,它显示了一些错误。这是日志 还有,如何检查ubuntu服务器中的PostgreSQL JDBC驱动程序版本?有人能帮我解决这个问题吗?谢谢

  • 我通过Spring Boot中编写的侦听器使用JMS对象消息。我正在通过我的Camel应用程序将ObjectMessage发送到ActiveMQ队列,我正在Spring Boot应用程序中的侦听器类中侦听队列。 代码: 这是我的POJO类: 在ActiveMQ队列中,我收到的消息为: 我在Spring Boot中的JMS侦听器: 我得到一个Exception@line: 通过堆栈溢出和网络上的其他