2012-03-08 101 views
0

我写了一个组件(EHComponent)来为其他组件(AComponent)进行错误处理。Apache Camel消息范围

AComponent从队列中读取,遇到错误,并且如果抛出异常,则会收到一些关于错误集的标题,并调用.to(“error.queue”)将消息放到另一个队列供EHComponent读取。

的EHComponent检查邮件头指的是错误类型,采取相应的行动,设置一些附加的邮件标题(计数多少次该消息已经做了它对错误队列)

的EHComponent设置该值,则调用一个.to(“Original.Queue”),这是AComponent读取的。

问题还没有解决,所以抛出了一个新的异常,所以这个相同的消息又经过了这个过程。

我遇到的问题是第二次通过,即使我认为它是相同的消息,我设置的这些标题不存在。

我的印象是,消息头在Camel中有些稳定,所以即使我在新的交换中,消息头也会完好无损。我需要做些什么来确保消息头可以从路由的任何部分的任何组件访问?

感谢

回答

0

头是消息的一部分,因此其高达你的运输保存头。 因此,当你使用你的组件发送消息到队列中时,确保你保存了头文件。

但是,如果您在Exchange中存储属性,则它们将保留在Exchange的整个生命周期中。

+0

另请参阅有关在处理消息期间在Camel Message API上使用getIn vs getOut的常见问题解答:http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html。 – 2012-03-09 05:09:42

相关问题