Вопрос

Я использую Spring Batch для системы, которая выполняет множество пакетных операций.
Я использую SimpleJobRepository с DAO в памяти.
Я хотел бы знать, есть ли способ избежать использования JobRepository?что-то похожее на безресурсный менеджер транзакций?
Причина, по которой я спрашиваю, заключается в том, что система должна работать постоянно без перезапуска, и у меня есть некоторые опасения по поводу памяти, которую она будет потреблять.
Я знаю, что могу использовать JobRepositry на основе базы данных, но, честно говоря, он мне вообще не нужен.

Если нет способа сделать это, я буду признателен, если кто-нибудь успокоит меня по поводу проблемы с потреблением памяти.

Спасибо.

Это было полезно?

Решение

Вы должны использовать репозиторий заданий, поскольку он содержит информацию о контексте задания.Решение для вашего случая - сделайте репозиторий вашей работы с помощью Scope = "Prototype". Это закроет новый DAO в памяти (реализация MAP) для каждой задания, и, следовательно, никакой проблемы с памятью.накладные расходы на создание нового экземпляра каждый раз бессмысленны с точки зрения пакетных заданий.

Другие советы

Реализация в памяти имеет существенный недостаток:вы не можете использовать многопоточность в своих пакетах.

Поэтому вы должны использовать репозиторий базы данных.Я предлагаю вам использовать H2 SQL:это очень легкая встроенная база данных.Мы используем его для наших модульных тестов.

Он очень хорошо работает с Hibernate.

Преимущество этого метода перед методом Бена заключается в том, что вы можете подключиться к своей базе данных памяти, чтобы проверить статусы заданий (и дату запуска и т. д.).

Я думаю, что пока мой код пакетной обработки является потокобезопасным, не имеет значения, находится ли репозиторий в памяти или в базе данных.Да, вы можете потерять некоторые преимущества кластеризации, которые вы можете получить, если используете БД, но если на моем сервере работает только одно пакетное задание и оно использует многопоточность для выполнения своей работы, это должно быть нормально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top