2013-12-09 2 views
1

Я пытаюсь использовать Springbatch для пакетного задания, которое должно записываться в файл (шаг 1), а также записывать данные (которые были отправлены в файл) в таблицу аудита. (Шаг 2)Запись в файл и таблицу аудита

Есть ли какой-либо лучший способ, кроме предоставления выходного файла с шага 1 в качестве ввода шага 2 для записи в БД?

Данные не могут быть переданы в контексте Exceution, потому что он огромен.

Спасибо.

ответ

2

Да, используя CompositeItemWriter.
От его Javadoc

Вызывает коллекцию ItemWriters в последовательности фиксированного порядка.

Просто создайте CompositeItemWriter проходящие делегат (Yours реального писателя: один для файла и один для таблицы аудита) и зарегистрировать их в качестве потока, чтобы позволить перезапуск.

<bean id="fileWriter" class="path.to.filewriterClass" /> 
<bean id="auditTableWriter" class="path.to.auditawriterClass" /> 
<bean id="compositeWriter" class="path.to.CompositeItemWriter> 
    <property name="delegates"> 
    <list> 
    <bean ref="fileWriter" /> 
    <bean ref="auditTableWriter /> 
    </property> 
</bean> 
<step name="step1"> 
    <tasklet> 
    <chunk reader="path.to.readerClass" writer="compositeWriter" /> 
     <streams> 
     <stream ref="fileWriter" /> 
     <stream ref="auditTableWriter" /> 
     </streams> 
    </tasklet> 
</step> 

См official doc для получения дополнительной информации и Google вокруг тонны примеров!

+0

Привет, Bellabax, для AuditTableWriter Я использовал пользовательский Itemwriter, реализующий ItemWriter, но получая исключение, говорящее, что поток не поддерживается. – jyn

+0

Пусть он реализует itemstream –

Смежные вопросы