Я использую конфигурацию Spring Integration (4.1) для извлечения сообщения из БД в виде пакета больше, чем как сервис. Я знаю, что у меня будет десяток сообщений для ежедневной обработки, поэтому мне нужно запустить пакет один раз в день.Выход из интеграции Spring, когда больше нет сообщений
My jdbc: входящий канал-адаптер настроен на получение max-rows-per-poll = "1". Я хотел бы получить уведомление в некотором роде, когда сообщений больше нет, так что я могу выйти из пакета, но у меня есть проблемы с поиском, где «подключиться». Я попытался с помощью перехватчика, который запоминает, когда прошло последнее сообщение + запланированное задание, которое извлекает эту метку времени и проверяет, не превышает ли это установленный тайм-аут, но это было очень громоздким и вместо этого пыталось использовать AOP, что кажется лучшим решением.
Я бы хотел перехватить вызов AbstractPollingEndpoint.doPoll(), который возвращает false, когда нет сообщения, но я не могу найти способ сделать это: я пробовал подклассию AbstractRequestHandlerAdvice, но это не работает, когда применяется на poller (это говорит мне так в журналах). Теперь я пытаюсь реализовать MethodInterceptor и настройки, как показано ниже, и я вижу, что я могу перехватить вызов «вызов» метод, но я не уверен, что это правильный путь
<int:poller default="true" trigger="periodicTriggerWithInitialDelay">
<int:advice-chain>
<bean class="com.myBatch.NoMoreMessageNotifierAdvice" />
<ref bean="txAdvice"/>
</int:advice-chain>
</int:poller>
Нет ли проще способ сделать это? Основная трудность, как указано здесь http://forum.spring.io/forum/spring-projects/integration/127410-poller-with-advice-chain, заключается в том, что на данном этапе у нас нет сообщений для работы.
Благодаря
Винсент