Интеграция Spring - это опрос файлов с последующим вызовом пакетного процесса Spring. Мой вопрос в том, можно ли выполнить некоторую проверку полученного сообщения
Созданное сообщение: [GenericMessage [payload = C: \ Prerna \ Sample \ hello.xlsx, headers = {id = b29e72bb-f8fe-ba96-36ec-497b3890a944, timestamp = 1516903490937}]]
Я хочу проверить, находится ли полученный файл в правильном формате, и выполнить некоторые проверки базы данных, инициировать электронное письмо, прежде чем вызывать весенний пакетный процесс. Пожалуйста, дайте мне знать, если это возможно. Если возможно, то, пожалуйста, посоветуйте, как вызвать часть проверки в моем потоке интеграционных потоков. Стоит ли это делать ручкой (активатором услуги)? Пожалуйста, посоветуйте, любой фрагмент кода поможет.
Ниже приведен код: -
@Configuration
class FilePollingIntegrationFlow {
@Autowired
private ApplicationContext applicationContext;
@Bean
public IntegrationFlow inboundFileIntegration(@Value("${inbound.file.poller.fixed.delay}") long period,
@Value("${inbound.file.poller.max.messages.per.poll}") int maxMessagesPerPoll,
TaskExecutor taskExecutor,
MessageSource<File> fileReadingMessageSource,
JobLaunchingGateway jobLaunchingGateway) {
return IntegrationFlows.from(fileReadingMessageSource,
c -> c.poller(Pollers.fixedDelay(period)
.taskExecutor(taskExecutor)
.maxMessagesPerPoll(maxMessagesPerPoll)))
.channel(ApplicationConfiguration.INBOUND_CHANNEL)
.transform(fileMessageToJobRequest())
.handle(jobLaunchingGateway())
.channel(MessageChannels.queue())
.get();
}
@Bean
public FileMessageToJobRequest fileMessageToJobRequest() {
FileMessageToJobRequest fileMessageToJobRequest = new FileMessageToJobRequest();
fileMessageToJobRequest.setFileParameterName("input.file.name");
// fileMessageToJobRequest.setJob(personJob());
System.out.println("FilePollingIntegrationFlow::fileMessageToJobRequest::::Job launched successfully!!!");
return fileMessageToJobRequest;
}
@Bean
public JobLaunchingGateway jobLaunchingGateway() {
SimpleJobLauncher simpleJobLauncher = new SimpleJobLauncher();
// simpleJobLauncher.setJobRepository(jobRepository);
simpleJobLauncher.setTaskExecutor(new SyncTaskExecutor());
JobLaunchingGateway jobLaunchingGateway = new JobLaunchingGateway(simpleJobLauncher);
System.out.println("FilePollingIntegrationFlow::jobLaunchingGateway::::Job launched successfully!!!");
return jobLaunchingGateway;
}