Можем ли мы запускать Spring Batch несколько раз в день? - PullRequest
1 голос
/ 01 мая 2020

Я реализовывал пакет Spring ранее несколько раз, но он был разработан для запуска только один раз в день.

Теперь у меня есть новое требование, когда мне нужно запускать пакет всякий раз, когда запись вставляется в таблицу. Когда вставляется новая запись, она запускает задание, а пакетный режим генерирует PDF, сохраняет его в хранилище и отправляет почту пользователю.

Я не уверен, как спроектировать весеннюю партию, которая запускается несколько раз в день, или это даже правильно go для весенней партии для этого сценария. Может кто-нибудь, пожалуйста, пролить свет на это. Спасибо !!!

Ответы [ 2 ]

2 голосов
/ 01 мая 2020

Вы можете реализовать прослушиватель, который будет отлавливать, когда данные хранятся в дБ (легко, например, с помощью hibernate), а затем использовать CommandLineJobRunner, чтобы запустить свою работу вручную.

См. spring_source

Вы можете запустить его несколько раз, просто будьте осторожны с использованием шаблона идентификатора для вашего экземпляра пакета

1 голос
/ 01 мая 2020

Согласно вашему требованию, вы можете достичь этого с помощью @EntityListeners (если вы работаете в hiberante). позвольте мне дать вам сценарий: -

 @Entity
  @Table(name="Order")
  @EntityListeners(OrderListner.class)
  public class Order{

    @Id
    public Integer id;

    // other properties
  }

Этот слушатель: -

class OrderListner{

    @PostPersist
    public void doStartSchedulerCode(){
        // You can call the code from here responobile for generating pdf and send mail,

    }

  }

Каждый раз, когда вы вставляете строку в таблицу заказов, вызывается doStartSchedulerCode (). Попробуйте это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...