У меня есть поток весенней интеграции, который начинается с файла-адаптера входящего канала, активируемого транзакционным поллером (tx обрабатывается atomikos).Текст в файле обрабатывается, и сообщение проходит через поток, пока не будет отправлено в одну из очередей JMS (адаптер исходящего канала JMS).Посередине, есть некоторые записи базы данных в рамках вложенной транзакции.Система предназначена для работы 24/7.
Бывает, что единый поток сообщений постепенно замедляется, и когда я исследовал, я обнаружил, что этап, который отвечает за увеличение задержки, - это чтение из файловой системы.
Ниже приведена первая часть потока интеграции:
<logging-channel-adapter id="logger" level="INFO"/>
<transaction-synchronization-factory id="sync-factory">
<after-commit expression="payload.delete()" channel="after-commit"/>
</transaction-synchronization-factory>
<service-activator input-channel="after-commit" output-channel="nullChannel" ref="tx-after-commit-service"/>
<!-- typeb inbound from filesystem -->
<file:inbound-channel-adapter id="typeb-file-inbound-adapter"
auto-startup="${fs.typeb.enabled:true}"
channel="typeb-inbound"
directory="${fs.typeb.directory.in}"
filename-pattern="${fs.typeb.filter.filenamePattern:*}"
prevent-duplicates="${fs.typeb.preventDuplicates:false}" >
<poller id="poller"
fixed-delay="${fs.typeb.polling.millis:1000}"
max-messages-per-poll="${fs.typeb.polling.numMessages:-1}">
<transactional synchronization-factory="sync-factory"/>
</poller>
</file:inbound-channel-adapter>
<channel id="typeb-inbound">
<interceptors>
<wire-tap channel="logger"/>
</interceptors>
</channel>
Я прочитал кое-что о проблемах, связанных с параметром предотвращения дубликатов, в котором хранится список просмотренных файлов, но это недело, потому что я выключил его.Я не думаю, что это может быть связано с фильтром (filename-pattern), потому что выражение, которое я использую в моей конфигурации (* .RCV), легко применить, а входная папка не содержит много файлов (меньше 100) одновременно.
Тем не менее, есть кое-что, что постепенно делает чтение из файловой системы медленным и медленным с течением времени, от нескольких миллисекунд до более 3 секунд в течение нескольких дней бездействия.
Любые намеки?