2012-03-08 4 views
0

Я написал компонент (EHComponent) для обработки ошибок для других компонентов (AComponent).Apache Camel message scope

AComponent считывает из очереди, обнаруживает ошибку, и если генерируется исключение, сообщение получает некоторые заголовки об ошибке, и вызывается сообщение .to ("error.queue"), чтобы поместить сообщение на другое очередь для чтения EHComponent.

EHComponent проверяет заголовки сообщения, относящиеся к типу ошибки, действует соответствующим образом, установив некоторые дополнительные заголовки сообщений (считая, сколько раз это сообщение сделало его к очереди ошибок)

EHComponent множества, значения, то вызывает .to («Original.Queue»), из которого читается AComponent.

Проблема не была исправлена, поэтому возникает новое исключение, поэтому это же сообщение снова проходит процесс.

Проблема, с которой я сталкиваюсь, заключается в том, что во второй раз, хотя я думаю, что это одно и то же сообщение, те заголовки, которые я установил, не существуют.

У меня создалось впечатление, что заголовки сообщений несколько стабильны в Camel, так что, хотя я нахожусь в новом обмене, заголовок сообщения будет неповрежденным. Что мне нужно сделать, чтобы обеспечить доступ к заголовку сообщения из любого компонента на любой части маршрута?

Благодарности

ответ

0

Headers является частью сообщения, и, таким образом его до ваших транспортов, чтобы сохранить заголовки. Итак, когда вы отправляете сообщения через очереди с помощью своего компонента, убедитесь, что вы сохраняете заголовки.

Однако, если вы сохраняете свойства на Exchange, они сохраняются на всю жизнь Exchange.

+0

Также см. Этот FAQ об использовании getIn vs getOut в API сообщений Camel во время обработки сообщения: http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html. –