Как использовать Spring-batch для чтения сообщений из Spring-integration channel?

#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 вместо использования пакетного задания; извините; неправильно понято.