Я новичок в весенней интеграции, и мы создали поток SI, в котором у нас есть Splitter и Aggregator, а также список получателей-маршрутизатор и агрегатор.
Сегодня, проверяя код, я запутался в том, как Aggregator очистит свое хранилище, если между ними возникнет исключение.
Меня беспокоит сценарий, в котором мы получили исключение между потоком и тем, что в системе создается объект устаревшего состояния.
Я проверил документацию по интеграции пружин, но не повезло (https://docs.spring.io/spring-integration/docs/2.0.0.RC1/reference/html/aggregator.html).
Я вижу только одну тему «Управление состоянием в агрегаторе: MessageGroupStore», но это касается «закрытия приложений».
Кроме того, я сделал Google для того же, и я нашел одну ветку https://dzone.com/articles/spring-integration-robust, но не в состоянии много следовать. Конечно, я вернусь, если смогу найти какое-то решение.
Я использую OOB Splitter, список получателей-маршрутизатор и агрегатор. Учитывая, что шаблон должен иметь механизм обработки этого общего сценария.
Можете ли вы направить меня
т.е:
<int:recipient-list-router input-channel="inputChannel"
default-output-channel="nullChannel">
<int:recipient channel="aInputChannel" />
<int:recipient channel="bInputChannel" />
</int:recipient-list-router>
<int:service-activator ref="aHandler"
input-channel="aInputChannel" output-channel="aggregatorOutputChannel" />
<!-- we have exception in the bHandler -->
<int:service-activator ref="bHandler"
input-channel="bInputChannel" output-channel="aggregatorOutputChannel" />
<int:aggregator input-channel="aggregatorOutputChannel"
output-channel="outputChannel" />
OR
<int-file:splitter id="splitile"
charset="UTF-8" apply-sequence="true" iterator="false"
input-channel="inputChannel"
output-channel="bTransformerChannel" />
<!-- consider we have exception at 4th chunk -->
<int:service-activator ref="transform"
input-channel="bTransformerChannel" output-channel="aggregatorOutputChannel" />
<int:aggregator input-channel="aggregatorOutputChannel"
output-channel="outputChannel" />