Инкрементные обновления с использованием компонента Camel http

#http #apache-camel

#http #apache-camel

Вопрос:

Мне нужно загрузить инкрементные обновления из веб-службы. URL-адрес загрузки имеет параметр «since», указывающий временную метку, и будет возвращать обновления после этой временной метки:

 http://super.service.com/update?since=4535463
  

Это вернет обновление, содержащее временную метку, которая должна быть указана как «с момента» в следующем запросе:

 { "timestamp": "453575", ... }
  

Маршрут периодически запускается компонентом Quartz.

Теперь мой вопрос заключается в том, каков наилучший способ сделать это в Camel? До сих пор я придумал:

  1. Сохраните временную метку в параметрах маршрута
  2. Сохраните временную метку в пользовательском компоненте
  3. Сохраняйте временную метку с помощью компонента properties и пользовательского преобразователя свойств

Все это кажется слишком сложным. Кроме того, каков наилучший способ обновить параметр запроса в URL

  1. Используйте перезапись URL
  2. Используйте заголовок для параметров URL (как я могу получить доступ к свойствам маршрута здесь?)
  3. Используйте заполнители свойств

Любые указания на лучшие практики будут высоко оценены.

С уважением, Йохен

Ответ №1:

Почему вы не сохраняете их в кэше с использованием компонента camel-cache? Затем вы можете просмотреть последнюю временную метку, полученную в вашем предыдущем запросе, из кэша и создать свой URL. С компонентом кэша довольно легко работать, и вы можете использовать его как часть вашего java dsl, не обращаясь к процессорам или компонентам.