我正在使用Grails路由插件,它允许使用非常类似于Java DLS语法的Groovy DSL语法定义Camel路由。
假设我有以下RouteBuilder:
class MyRoute extends RouteBuilder {
from('activemq:route1')
.to('someProcessor1')
.to('direct:route2')
from('direct:route2')
.to('someProcessor2')
onException(Throwable.class).useOriginalMessage().handled(true)
.to('activemq:route.failed')
}
如果我的消息从activemq:route1
开始,然后移至direct:route2
但在someProcessor2
中失败,那么我会在activemq:route1
开始时收到消息在我的activemq:route.failed
队列中...但这不是我想要的。如果我在someProcessor2
中遇到了失败,我希望该消息从direct:route2
开始(同样,如果我在someProcessor1
中失败,我想要activemq:route1
消息在我失败的队列中。)
是否有任何Apache Camel功能允许我在RouteDefintion开头“重置”原始邮件(即from(<uri>)
)?
答案 0 :(得分:1)
使用direct:
以外的东西加入你的路由(seda,vm,activemq),它会按照你的建议行事......否则,你也可以在标题中明确保留消息的相关状态并恢复它在onException子句中等等。