Spring, MVC, Java, заставляющее одноэлементный компонент выполнять действие каждые 5 секунд? - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть приложение Spring MVC, в котором я использую одноэлементный компонент, хранящий большой объект hashmap.Я использую объектную базу данных NeoDats, чтобы сохранить это, так как это своего рода приложение поисковой системы, и мы используем его, чтобы мы могли осуществлять поиск по объекту hashmap (он более сложен, чем поисковая система с булевыми ключевыми словами), этот объект hashmap часто обновляется с помощьюданные от пользователя (теги, которые они добавляют в данные для категоризации) В настоящее время проблема заключается в том, что я сохранял объект hashmap в базе данных NeoDatis на основе действий пользователя, но, поскольку для сохранения большого объекта может потребоваться несколько секунд,иногда это приводит к проблемам, если пользователь сохраняет слишком быстро.

Я хотел бы удалить связь между действием пользователя и сохранить этот объект hashmap и сделать его автоматически, например каждые 5 секунд.,Возможно, мне придется сделать это в ближайшее время, так как мы можем расширить приложение для запуска на более чем одном сервере, чтобы была бы довольно сложная система для синхронизации этих объектов hashmap между системами, а наличие пользовательских действий для сохранения БД сделало бы ее слишком ненадежной,Я думаю.

Я не совсем уверен, как подойти к этому, я не думаю, что потоки будут работать, потому что это экземпляр синглтон-компонента, поэтому я не знаю, смогу ли я получить к нему доступ через поток (поскольку данные в объекте hashmap изменятся после запуска потока).Любые советы о том, как подойти к этому / ресурсы, с благодарностью

Ответы [ 2 ]

3 голосов
/ 08 апреля 2011

Я бы порекомендовал либо ExecutorService, либо службу Quartz timer, встроенную в Spring.

1 голос
/ 08 апреля 2011

Я бы рассмотрел Кварц

...