CamelExchangeException Неверный ключ корреляции в заголовке обмена - PullRequest
0 голосов
/ 17 октября 2018

Apache Camel выдает исключение недопустимого ключа корреляции при попытке агрегировать сообщения из моей очереди AWS SQS.Сообщения были помещены в очередь с помощью ZipSplitter, и все они появляются в очереди с соответствующими значениями «parentId» (которые я добавил, используя случайный uuid как часть разделения - я также пробовал CamelSourceFile).Я получаю Исключение несколько раз, пока повторные попытки не будут исчерпаны.

Мое агрегированное выражение:

from(--queue--).aggregate(header("parentId"), customAggregationStrategy).completionTimeout(3000).processor(new Processor() {...}.to(--next queue--);

Нет записи журнала, генерируемого ни моим customAggregationStrategy, ни любым из последующих процессоров.Он не может агрегировать:

... DeadLetterChannel - Failed delivery for (MessageId: ...). On Delivery attempt: 0 caught ...CamelExchangeException: Invalid correlation key. Exchange[ID...]

Для моих попыток повторной попытки попытка доставки - от 0 до 9.

Раздражающая вещь заключается в том, что код работает везде, но локально ... как вы думаете,сузить круг вопросов, но ни исключение, ни что-либо еще не зафиксировано не проливает свет на то, что здесь происходит.

1 Ответ

0 голосов
/ 17 октября 2018

Вы можете попытаться использовать простой язык Camel при выражении ключа корреляции, например:

.aggregate(simple("${headers.parentId}", customAggregationStrategy)

Таким образом, исключения могут игнорироваться молча?

Вы активировали Camel Tracer (http://camel.apache.org/tracer.html) для анализа ваших обменов и упрощения отладки?

Я подозреваю, что у вас есть Exchange, который НЕ имеет заголовка "parentId". Если вы хотите пропустить их,просто активируйте опцию ignoreInvalidCorrelationKeys (см. http://camel.apache.org/aggregator2.html)

...