Я перемещаю свое устаревшее приложение из Spring Integration (SI) с 4.3.8 на 5.2.6. (И я использую Spring Boot ver # 2.2.7) В некоторых из моих маршрутов у меня есть следующая цепочка:
<int:chain id="answersChain" input-channel="answersChannel">
<int:header-enricher>
<int:header name="route" expression="@config.get(payload.name)"
type="com.model.Route"/>
</int:header-enricher>
<int:aggregator discard-channel="unmatchedAnswersChannel"
group-timeout-expression="size() ge 2 ? 0 : one.headers['route']?.timeout"
expire-groups-upon-completion="true"
send-partial-result-on-expiry="false"
correlation-strategy-expression="payload.correlKey"
release-strategy-expression="size() == 2 and !#this[1].payload.sysReply"
expression="#this[1]"
/>
<int:router expression="headers['route'].source.channelName"/>
</int:chain>
На самом деле код и макеты SI покрываются модульным тестом. Запуск модульного теста для версии 4.3.8 - это нормально. Но запустить тот же тест для SI версии 5.2.6 не удалось. Кажется, что последний int: router вообще не вызывается. По крайней мере, я не вижу, что он был вызван в журналах, поскольку я видел, что он работает под SI ver. 4.3.8. Когда unit test не проходит - ничего не сбрасывается в discard-channel. Кажется, что этот агрегатор ведет себя как черная дыра.
Мне нужно уточнить два вопроса:
- Есть ли критические обновления / ошибки в SI ver. 5.2.6, вызывающая проблему?
- Как я могу отладить свой макет? пока я использую разные заглушки при отладке, но, может быть, есть более удобные способы?
Заранее спасибо за любую помощь