#spring-batch #spring-integration
#spring-batch #spring-интеграция
Вопрос:
Мое существующее приложение spring-integration отправляет сообщения POJO в канал. Как мне подключить spring-batch, чтобы он читал сообщения из этого канала в режиме реального времени? Нужно ли мне создавать пользовательский ItemReader или есть что-то готовое, что я могу использовать? Также был бы полезен простой пример конфигурации XML.
Ответ №1:
Я не знаю ничего «из коробки», но было бы тривиально обернуть PollableChannel
(обычно Queuechannel
) в ItemReader
, просто используйте channel.receive(timeout)
in read()
.
Когда время ожидания истекает, считыватель возвращает значение null; это указывает на окончание пакета.
Комментарии:
1. Спасибо — это очень хорошее предложение! В моей ситуации каналы всегда будут получать данные, поэтому кажется, что пакетное задание никогда не закончится. Кроме того, я не уверен, что первое сообщение на канале вызовет пакетное задание, поэтому мне нужно как-то запустить задание. Я прочитал INT-3364 , где вы предложили обернуть JdbcBatchItemWriter в service-activator для поддержки пакетной вставки — я попробую этот подход.
2. Нет; речь шла конкретно о пакетной записи в JDBC; чтобы запустить задание, вы должны использовать шлюз запуска задания; смотрите Документацию по интеграции Spring Batch для получения дополнительной информации .
3. О; Я понимаю, вы имеете в виду использовать технику INT-3364 вместо использования пакетного задания; извините; неправильно понято.