#http #apache-camel
#http #apache-camel
Вопрос:
Мне нужно загрузить инкрементные обновления из веб-службы. URL-адрес загрузки имеет параметр «since», указывающий временную метку, и будет возвращать обновления после этой временной метки:
http://super.service.com/update?since=4535463
Это вернет обновление, содержащее временную метку, которая должна быть указана как «с момента» в следующем запросе:
{ "timestamp": "453575", ... }
Маршрут периодически запускается компонентом Quartz.
Теперь мой вопрос заключается в том, каков наилучший способ сделать это в Camel? До сих пор я придумал:
- Сохраните временную метку в параметрах маршрута
- Сохраните временную метку в пользовательском компоненте
- Сохраняйте временную метку с помощью компонента properties и пользовательского преобразователя свойств
Все это кажется слишком сложным. Кроме того, каков наилучший способ обновить параметр запроса в URL
- Используйте перезапись URL
- Используйте заголовок для параметров URL (как я могу получить доступ к свойствам маршрута здесь?)
- Используйте заполнители свойств
Любые указания на лучшие практики будут высоко оценены.
С уважением, Йохен
Ответ №1:
Почему вы не сохраняете их в кэше с использованием компонента camel-cache? Затем вы можете просмотреть последнюю временную метку, полученную в вашем предыдущем запросе, из кэша и создать свой URL. С компонентом кэша довольно легко работать, и вы можете использовать его как часть вашего java dsl, не обращаясь к процессорам или компонентам.