2.9 KiB
IGNITE
IgniteAggregationRepository сделано на основе JdbsAggregationRepository документация https://help.talend.com/reader/Uc2IlRuFVfGrjaFPdRI7kA/fBdqK2kf6iIkLHQf9nLh6g
Есть некоторые внутренние баги karaf, которые не позволяют установить
некоторые ignite фичи в караф
fd921a233d/modules/osgi-karaf/src/main/resources/features.xml (L87)
В карафе поднимается ignite, с рабочей директорией, прописанной в ru.entaxy.esb.ignite.cfg, в параметре ignite.work.directory.path. Это место, где игнайт создает для себя все, что нужно, и будет хранить данные.
Ignite настроен с сохранением персисетнтности данных(сохранением их на диск) и созданием реплицации(бэкапов) на других узлах кластера.(при потере одной ноды, другие восстановят данные, которе хранились на текущем узле)
IGNITE_QUIET=false - параметр необходимый для того, чтобы игнайт не писал информацию о себе в лог, для того что бы параметр применился, необходимо выставить setGridLogger, смогла установить в караф только JclLogger.
AggregationProcessor
AggregationProcessor стандартный, не расчитан на работу в кластере из-за чего пришлось вытаскивать исходники и редактировать сам процессор.(AggregationProcessorWithRestoreTimeout) Т к теперь AggregationProcessor вызывается как bean, а не как стандартный камеловский процессор, то процесс старта и остановки происходит в отличном порядке.
Для работы к кластере: - добавлен механизм восстановления работы таймаутов на других нодах, - отредактирован механизм удаления сообщения из репозитория(возникало состояние гонки и появлялись дубликаты), - исправлен механизм продолжения работы с “застрявшими” сообщениями (recoverTask из таблицы _completed) - добавлен безопасный механизм забора сообщений из очереди(восстановление сообщения в очереди, если не пришло подтверждение)