У меня вопрос по поводу Spring Batch и возможности повторного использования.
Я работаю над проектом, который состоит из онлайн-приложения, разработанного с помощью Spring Mvc, и нескольких пакетных процессов, разработанных с помощью Spring Batch.Некоторые из вариантов использования онлайн также выполняются в пакетных процессах.
Например, давайте представим, что наше онлайн-приложение - это Sagan-приложение Spring * , а вариант интерактивного использования, который мы хотим повторно использовать в пакетном режиме, - createOrUpdateMemberProfile .Из онлайн-приложения в каждом запросе создается или обновляется отдельный профиль участника.Однако в пакетном процессе создается много профилей участников, считывающих информацию из файла CSV.
Чтобы реализовать это, первый вариант - сохранить метод createOrUpdateMemberProfile в том виде, как он есть, и разработать новый код для пакетного процесса с помощью Spring Batch, используя его ItemWriters и другие элементы.Таким образом, я разрабатываю сценарий использования два раза: один для онлайн-транзакций, а второй для пакетных процессов.
Второй вариант заключается в повторном использовании createOrUpdateMemberProfile метода в пакетном процессе с ItemWriterAdapter .Таким образом, я повторно использую онлайн-метод, но полагаю, что теряю некоторую производительность, потому что избавляюсь от чан-ориентированной обработки .В зависимости от количества профилей участников, создаваемых из файла CSV, это может быть немного рискованно.
Третий и последний вариант - избавиться от метода createOrUpdateMemberProfile и реализовать пакетный процесс с помощью Spring Batch, который также вызывается из онлайн-приложения.То есть онлайн-приложение запустит задание, но вместо создания множества профилей участников оно создаст только один.Таким образом, я повторно использую код, но он звучит для меня очень странно, и я забрасываю его заранее.
Прямо сейчас я заинтересован во втором варианте, но мне интересно, теряю ли я что-то, кроме производительности, или я буду бороться с другим аспектом, о котором я не знаю.Любой совет или предложение будут оценены.
Спасибо.