2013-12-11 1 views
0

Я хотел бы знать, если Camel предоставляет любые стандартные агрегирующие стратегии из коробки. Я занимаюсь исследованиями, но у меня есть только возможность найти часть тестов. Эти те не могут быть использованы из фактического кода. Я пытаюсь использовать его с Apache Camel 2.12.1 и Spring DSL.Simple AggregationStrategy Apache Camel

В частности, я ищу this one:

public Exchange aggregate(Exchange oldExchange, Exchange newExchange) { 
    if (oldExchange == null) { 
     return newExchange; 
    } 

    String oldBody = oldExchange.getIn().getBody(String.class); 
    String newBody = newExchange.getIn().getBody(String.class); 
    oldExchange.getIn().setBody(oldBody + "+" + newBody); 
    return oldExchange; 
} 

Если они не включены в пакет, есть ли решение сделать то же самое в Спринг DSL без необходимости создания AggregationStrategy в коде?

Спасибо за помощь!

ответ

2

Общий агрегатор не работает. Пример, который у вас есть, работает, если оба тела являются строками, и предполагает, что их не нужно разделять с помощью каких-либо разделителей. Но как насчет JSON или XML? Простая конкатенация этих функций не будет работать, поскольку в итоге вы получите 2 элемента верхнего уровня. Я верю, что именно поэтому Camel вы реализуете свои собственные.

+0

Да, у вас есть своя логика, как объединить сообщения, которые зависят от бизнес-требований и того, какой формат данных у вас есть в игре и т. Д. –

+0

Я вижу, я сделаю свою собственную версию этого. Спасибо за ответ и комментарии. – hveiga

1

По крайней мере, в версии 2.13.1 (тот, который я использую сейчас) существует GroupedExchangeAggregationStrategy, который расширяет . GroupedExchangeAggregationStrategy объединяет всех членов в List<T>. После этого речь идет о преобразовании списка в другой тип, возможно, с помощью POJO.

 Смежные вопросы

  • Нет связанных вопросов^_^