2015-12-09 4 views
1

Я работаю над приложением загрузки java-spring. У меня есть определенные константные значения приложения, хранящиеся в базе данных Cassandra, и мне нужно попасть в базу данных для каждого запроса, чтобы получить эти постоянные значения из базы данных, что является плохой практикой. Поэтому я думал об извлечении этих значений при запуске приложения и хранении его в статических переменных и доступа к этим переменным в приложении. Но проблема, с которой я столкнулся здесь, - после запуска приложения и после того, как данные извлекаются из БД и хранятся в статических переменных, а в случае, если мы изменим значения в базе данных, эти статические переменные не обновляются новыми значениями до тех пор, пока Я перезапускаю приложение. Есть ли лучший подход для обновления этих статических переменных по мере изменения значений в базе данных без перезапуска приложения. Пожалуйста, помогите мне. Заранее спасибо.Загрузка данных из Cassandra при запуске приложения

+0

Показать код, по которому вы пользовались. «Типичным» решением является запуск цикла таймера в вашем приложении для опроса базы данных на регулярном цикле (например, один раз в минуту, например). Это заставит приложение получать последние значения в течение 60 секунд после их изменения. – Brandon

ответ

0

Одним из подходов может быть использование какого-то брокера сообщений, такого как Kafka (http://kafka.apache.org/), для публикации изменений в базе данных подписчикам или (без кафки) для использования каких-либо push-уведомлений.

Возможная установка может быть что-то вроде этого:

Service2 используется для изменения ваших «константы». Поэтому вы не должны изменять эти значения напрямую, используя cqlsh, но только используя эту вторую услугу. После успешного изменения вы можете теперь отправить http-запрос на «обновить» -endpoint вашего обычного приложения с пружинным загрузочным приложением. Это уведомление обновления может инициировать обновление в вашем приложении. Это в основном подход обратного вызова.

Вторым и более гибким способом может быть использование брокера сообщений, такого как kafka. С помощью kafka вы все равно создадите сервис, который вы используете, чтобы изменить свои «константы». Разница здесь в том, что после того, как вы успешно изменили свои данные, вы отправили сообщение кафке. Kafka теперь может отправлять ваше сообщение каждой службе, которая зарегистрировала себя в качестве подписчика. Используя эту опцию, вы можете добавить несколько подписчиков, если у вас больше услуг в зависимости от ваших «констант».

Лично я не являюсь поклонником опроса, в котором вы проверяете каждые х секунд, если существует изменение.

Смежные вопросы