Я хотел бы создать что-то вроде «левого внешнего соединения» на основе верблюжьих маршрутов. В моем проекте у меня есть два маршрута, которые потребляют данные из двух таблиц базы данных и отправляют их строка за строкой на следующий шаг (joinData). Обе таблицы имеют одинаковый первичный ключ, и я хотел бы объединить данные из этих двух таблиц на основе этого первичного ключа. Мой сценарий:
<route id="select1">
//some code
<to uri="direct:joinData"/>
</route>
<route id="select2">
//some code
<to uri="direct:joinData"/>
</route>
<route id="joinData">
<from uri="direct:joinData"/>
<aggregate strategyRef="joinStrategy" completionSize="2">
<correlationExpression>
<jsonpath>$.ID</jsonpath>
<to uri="direct:result/>
</aggregate>
</route>
Последнее сообщение из обоих источников содержит специальный заголовок / свойство, установленное в значение true, когда запись была выбрана в последний раз. Есть ли какая-то возможность, как завершить остальные ожидающие сообщения, ожидающие в агрегаторе, которые не были объединены, когда пришел этот специальный заголовок, или, лучше, оба заголовка пришли? Потому что теперь только присоединенные сообщения отправляются на маршрут результата. Я хотел бы завершить все ожидающие сообщения, когда загрузка из БД заканчивается.
Спасибо за ваши идеи.