Как использовать ShedLock в интеграции Spring?

#spring #spring-batch #spring-integration #shedlock #distributed-lock

#весна #spring-batch #spring-интеграция #shedlock #распределенная блокировка

Вопрос:

Я объединяю весеннюю партию и весеннюю интеграцию, я использую опросник с кукурузой:

 @Bean
@SchedulerLock(name = "importEntitiesRiskCodes", lockAtMostForString = "PT5M")
public IntegrationFlow integrationFlow() {
    return IntegrationFlows.from(fileReadingMessageSource(),
            c -> c.poller(Pollers.cron("0-7 1-59/5 * * * ?").maxMessagesPerPoll(maxFilesPerPoll)))
            .channel(fileIn())
            .transform(fileMessageToJobrequest())
            .handle(jobLaunchingGateway())
            .log()
            .get();
}
 

Я знаю, что JDBC обеспечивает интеграцию с Spring JDBCLockRepository , но я хочу знать, как использовать ShedLock.

Ответ №1:

Из вашего описания неясно, как вы вообще собираетесь использовать эту блокировку, но, согласно этой статье, не похоже, что есть что-то, связанное с Spring Integration.

С другой стороны, даже если я не знаком с библиотекой, неплохо добавить LockRegistry реализацию ShedLock в Spring Integration. Хотя это может не иметь отношения к вашей задаче…

Комментарии:

1. Приветствую Артема, прежде всего, спасибо. Я отредактировал свой вопрос. Да, я могу использовать его в качестве предложенного примера, но проблема в том, что я хочу воспользоваться опросником, который предлагает Spring Integration, и объединить его с Shedlock.

2. Ну, то, что вы показываете, не имеет смысла. Эта аннотация не будет делать ничего ценного во время выполнения. Вероятно, вам нужно подумать о пользовательской Trigger реализации вместо cron.

3. Да, это именно то, что я сделал. Спасибо, я хотел узнать, есть ли такая интеграция в коробке.

4. хорошо из коробки JdbcLockRegistry