作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
生成输入主体的第一条路线。
from("timer://bar?fixedRate=true&period=10000s")
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setBody("some message");
}
}).to("direct:dummydata");
第二条路由抛出异常并通过onException
捕获。
onException(RuntimeException.class)
.useOriginalMessage()
.handled(true)
.log("after catching: ${body}");
from("direct:dummydata")
.log("before exception: ${body}.")
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
throw new RuntimeException("some exception");
}
});
预期:异常(exception)之前:一些消息。捕获后:一些消息。
现实:
2016-04-18 18:08:02.342 INFO 5659 --- [0 - timer://bar] route2 :
before exception: some message.
2016-04-18 18:08:02.345 INFO 5659 --- [0 - timer://bar] route2 :
after catching:
2016-04-18 18:08:02.349 ERROR 5659 --- [0 - timer://bar]
o.a.camel.processor.DefaultErrorHandler : Failed delivery for
(MessageId: ID-sdcit001mac-49629-1460974079807-0-1 on ExchangeId:
ID-sdcit001mac-49629-1460974079807-0-2). Exhausted after delivery attempt:
1 caught: java.lang.RuntimeException: some exception. Processed by failure processor:
FatalFallbackErrorHandler[Channel[Log(route2)[after catching: ${body}]]]
为什么 useOriginalMessage()
在这里不起作用?
最佳答案
问题似乎与“直接:”的使用有关。如果将其更改为“direct:vm”,您应该会看到想要的结果。
也许潜在的原因与“直接”有关:几乎被视为来自第一条路线的直接调用,因此暗示一个空的起始主体(来自计时器)。
关于java - Camel useOriginalMessage 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36690998/
我正在使用Grails路由插件,该插件允许使用与Java DLS语法非常相似的Groovy DSL语法定义Camel路由。 假设我有以下RouteBuilder: class MyRoute exte
生成输入主体的第一条路线。 from("timer://bar?fixedRate=true&period=10000s") .process(new Processo
我是一名优秀的程序员,十分优秀!