我有骆驼路线。
from(errorMultiDirect).routeId("errorMulticastTest")
.errorHandler(deadLetterChannel(mock)
.onPrepareFailure(errorProcessor).maximumRedeliveries(0))
.log(LoggingLevel.INFO, "Testing Error route")
.setHeader(OrderMessageConstants.WIMS_MSG_TYPE, simple("body[messageType]"))
.setHeader(OrderMessageConstants.SAP_MESSAGE_ID, simple("body[messageID]"))
.setHeader(OrderMessageConstants.ORDER_NUMBER, simple("body[orderHeader][order]"))
.multicast().parallelProcessing().shareUnitOfWork().stopOnException().to("direct:materialsTest", "direct:qmDocTest", "direct:sdsTest").end()
.to("log:com.sial.NotifyStatusLogger?level=INFO");
如果异常发生在任何组播路由中,如materaialsTest,则异常会被捕获在组播代码中,但异常不会被发送到死信通道。根据文档,设置shareUnitOfWork应该可以实现这一点,但它没有,设置StoponException也没有。我是不是漏掉了什么?
from(errorDirect).routeId("errorMaterialTest")
.errorHandler(deadLetterChannel(mock)
.onPrepareFailure(errorProcessor).maximumRedeliveries(0))
.log(LoggingLevel.INFO, "Testing Error route")
.setHeader(OrderMessageConstants.WIMS_MSG_TYPE, simple("body[messageType]"))
.setHeader(OrderMessageConstants.SAP_MESSAGE_ID, simple("body[messageID]"))
.setHeader(OrderMessageConstants.ORDER_NUMBER, simple("body[orderHeader][order]"))
.bean(materialsEnrichment)
.to("log:com.sial.NotifyStatusLogger?level=INFO");
当materialsEnrichment bean抛出异常时,第二条路由将消息发送到死信通道。这与组播路由通过“direct:materialstest”调用的bean相同。
您需要关闭直接路由中的错误处理,因为死信通道仅在您的路由中被配置为路由范围内的错误处理程序。则直接路由的故障应由组播路由处理。
from("direct:xxx")
.errorHandler(noErrorHandler())
我有一个定义doTry-doCatch块的路由。当在doCatch块中处理异常时,我希望将其传播到错误处理程序,以确保在本地处理后将消息添加到死信队列中。问题是我无法让错误处理程序的传播工作(“defaultErrorHandler called!”未打印到控制台)。我也尝试过onException,但也没有成功。 任何提示都非常感谢。此致,奥利弗
假设我有这个应用程序: 我所需的输出如下: 我知道使用反射或其他一些运行时技术检查异常的类型,并在异常捕获子句中放置if语句,就像一次捕获多个异常一样,但我想获得关于上述方法是否可行的反馈。
1.1 异常处理的基本使用 try: <语句块1> except: <语句块2> try 捕获异常 except 发生异常时执行 try: <语句块1> except <异常类型名字>: <语句块2> except <异常类型名字> 发生对应异常时才会执行 1.2 异常处理的高级使用 try: <语句块1> except
问题内容: 如果我在.NET中没有记错的话,可以为未处理的异常注册“全局”处理程序。我想知道Java是否有类似的东西。 问题答案: 是的,有,但只有在没有设置时才会触发。
我是一个有Spring和Spring靴的新手。在创建了一个简单的REST API来对用户执行CRUD操作之后,我还创建了自定义的异常处理程序来捕获应用程序中发生的任何异常。这是我写的代码 controller类 使用@ControllerAdvice注释的异常处理程序类 但是,当发生任何异常时,应用程序将被重定向到/error page,而不是由异常处理程序类处理。谁能给出正确的方法来做这件事。
我应该知道这一点,但不知为何我现在还想不出来。 是否有方法重写此代码以避免?