我正在使用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>)
)开头“重置”原始消息?
最佳答案
使用direct:
之外的其他东西来加入您的路由(seda,vm,activemq),它将按照您的建议运行...否则,您还可以在 header 中显式保留消息的相关状态,并在onException子句中将其还原。
关于grails - useOriginalMessage()和多个 'from'节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13615958/