Реализация "клапанной" схемы агрегатора в Apache Camel - PullRequest
3 голосов
/ 21 января 2020

Я относительно новичок в Camel (2.24.x) и пытаюсь использовать стратегию AggregationStrategy в DSL Java, но у меня есть несколько связанных с этим проблем / проблем. Также обратите внимание, что, хотя я решаю использовать DSL Java, я также принимаю ответы / объяснения в формате Spring Camel XML, если это лучшее, что я могу получить!

I ' я пытаюсь использовать AggregationStrategy как «клапан», то есть собирать / агрегировать входящие обмены, пока не определит, что готов переместить этот агрегированный обмен на оставшуюся часть маршрута, но не разрешить обмены / сообщения за ним до тех пор, пока он этого не сделает. определение. По сути, этот «клапан» (агрегатор) закрывается до тех пор, пока он не определит, что он адекватно агрегировал обмены 1+, а затем он «откроется», как только он сделает это определение.

Для реализации интерфейса AggregationStrategy используется код barebones. это:

public class RunValve implements AggregationStrategy {

    @Override
    public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
        return null;
    }

}

Что соответствуют oldExchange и newExchange? Является ли oldExchange тем, который мы собираем, а newExchange - просто следующее сообщение, которое мы можем (необязательно) добавить в oldExchange? Что должен вернуть метод aggregate (...), oldExchange или newExchange? Или что-то еще?!

И затем , как только я определил (в методе совокупности (...)), что пришло время "открыть клапан" (например, что мы имеем успешно агрегировано на 100%), как я могу сказать Camel, чтобы разрешить агрегированный обмен до остальной части маршрута?

Заранее благодарим за понимание всех вопросов!

...