我正在使用Grails路由插件,它允許使用非常類似於Java DLS語法的Groovy DSL語法定義Camel路由。useOriginalMessage()和多個'from'節點
假設我有以下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>)
)「重置」原始消息?
有趣的是,有什麼可以比得上'直接'具有我想要的行爲(簡單同步消息)?你列出的所有選項都是異步的,並且會改變我的路線的語義。我目前正按照你所描述的明確的保存/恢復方法,但是想確保我不重新發明輪子。 –
'直接'重複使用同一個線程/交換跨越路線......它在某些方面很有用,但這是我過去必須解決的一種情況......如果您找到了更好的方法,請告訴我 –