Spring Batch безресурсный JobRepository - PullRequest
2 голосов
/ 18 января 2010

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

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

Спасибо.

Ответы [ 3 ]

3 голосов
/ 31 января 2010

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

1 голос
/ 28 апреля 2011

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

1 голос
/ 18 февраля 2010

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

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

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

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

...