useOriginalMessage()和多个'from'节点

时间:2012-11-28 23:00:31

标签: grails groovy apache-camel

我正在使用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>))?

1 个答案:

答案 0 :(得分:1)

使用direct:以外的东西加入你的路由(seda,vm,activemq),它会按照你的建议行事......否则,你也可以在标题中明确保留消息的相关状态并恢复它在onException子句中等等。