Start & Stop - Spring-адаптер входящего канала imap из основных аргументов

Я настроил адаптер канала imap для получения почты с фиксированной задержкой 20000. Так что работает как положено. Но проблема в том, что он работает постоянно. Итак, у меня есть пара вопросов:

  1. Как я могу запустить и остановить этот адаптер канала, используя main()?
  2. Когда мы конфигурируем это задание на пакетном сервере (Unix), как я могу остановить это задание, используя саму основную программу (этот адаптер канала работает постоянно).
  3. Как я могу вернуть что-то методу main, который запускает опросчик как "success" или "fail", чтобы я мог вернуть system.exit(0) или system.exit(1) из main.
  4. Как получить полный контроль над main (), запустив адаптер канала?

Заранее спасибо за помощь.

<int-mail:imap-idle-channel-adapter id="customAdapter"
        store-uri="imaps://[userid]:[pasword]@imap.gmail.com:993/inbox"
        channel="receiveChannel"
        auto-startup="true"
        should-delete-messages="false"
        should-mark-messages-as-read="false"
        java-mail-properties="javaMailProperties"auto-startup="false">
    <int:poller max-messages-per-poll="10" fixed-delay="20000"/>

1 ответ

Решение
  1. Запуск и остановка могут контролироваться через компонент шины управления.

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

  3. Если вам нужно запустить его только один раз, вы можете рассмотреть trigger вариант вместо fixed-delay и реализовать это как:

    private final AtomicBoolean invoked = new AtomicBoolean();
    
    public Date nextExecutionTime(TriggerContext triggerContext) {
        return this.invoked.getAndSet(true) ? null : new Date();
    }
    
  4. Вернуть что-то на главную можно с помощью простого CountDonwLatch и немного AtomicBoolean (или же Referenceбоб

Извините, столько вопросов в одной теме... Это не подходит для SO.

Другие вопросы по тегам