gpt4 book ai didi

java - Camel useOriginalMessage 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:07:55 25 4
gpt4 key购买 nike

生成输入主体的第一条路线。

    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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com