Start & Stop - Spring-адаптер входящего канала imap из основных аргументов
Я настроил адаптер канала imap для получения почты с фиксированной задержкой 20000. Так что работает как положено. Но проблема в том, что он работает постоянно. Итак, у меня есть пара вопросов:
- Как я могу запустить и остановить этот адаптер канала, используя main()?
- Когда мы конфигурируем это задание на пакетном сервере (Unix), как я могу остановить это задание, используя саму основную программу (этот адаптер канала работает постоянно).
- Как я могу вернуть что-то методу main, который запускает опросчик как "success" или "fail", чтобы я мог вернуть system.exit(0) или system.exit(1) из main.
- Как получить полный контроль над 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 ответ
Решение
Запуск и остановка могут контролироваться через компонент шины управления.
Вы можете даже остановить этот адаптер из нисходящего потока по некоторым условиям и отправить сообщение на тот же канал шины управления.
Если вам нужно запустить его только один раз, вы можете рассмотреть
trigger
вариант вместоfixed-delay
и реализовать это как:private final AtomicBoolean invoked = new AtomicBoolean(); public Date nextExecutionTime(TriggerContext triggerContext) { return this.invoked.getAndSet(true) ? null : new Date(); }
Вернуть что-то на главную можно с помощью простого
CountDonwLatch
и немногоAtomicBoolean
(или жеReference
боб
Извините, столько вопросов в одной теме... Это не подходит для SO.