Слушатель таблиц MySql в Java

Вот мое требование:

Моя служба Java - это непрерывный процесс. При запуске службы java она загружает конфигурацию из одной из таблиц в базе данных MySql.

Когда есть какие-либо изменения (может быть insert/update/delete, также возможно вне java-сервиса), java-сервис должен немедленно перезагрузить конфигурацию.

Я видел Почта в stackoverflow, который предназначен для базы данных Oracle, но я ищу базу данных Mysql.

Я могу добиться этого, используя отдельный поток, который опрашивает таблицу базы данных с некоторым интервалом. Но голосование за изменения - не лучший способ. Вместо этого я ищу любой наблюдатель / слушатель, который будет уведомлять о любых изменениях в таблице MySql.

Может ли кто-нибудь помочь мне в этом?

Примечание. Если где-то уже есть ответ на этот вопрос, опубликуйте ссылку в комментарии, я удалю этот вопрос.

похоже, это может вам помочь. в конце концов, это оператор sql, который вернет набор результатов: serverfault.com/questions/112468/mysql-database-listener

Instinct 25.07.2018 09:22

@instinct, Спасибо за ответ, но опять же надо с некоторым интервалом правильно опрашивать базу данных. Я пытаюсь этого избежать.

Amaresh Narayanan 25.07.2018 09:28

Рассматривали ли вы использование файла конфигурации или файла свойств (вместо таблицы базы данных)? Можно обнаружить изменение файла с помощью java.nio.file.WatchService.

prasad_ 25.07.2018 09:48

Нет ничего, что работает из коробки, вы можете быть пересечены здесь в ответах: stackoverflow.com/questions/23031723/…

StephaneM 25.07.2018 09:59

@prasad, по какой-то другой причине мы должны использовать mysql в качестве источника конфигурации. Я думал о файле как о конфигурации. В любом случае спасибо за комментарий.

Amaresh Narayanan 25.07.2018 10:20

Взгляните на mysql-уведомление.

Mick Mnemonic 25.07.2018 10:28

Как насчет RowSetListener? Он может обнаруживать изменения в RowSet (например, JdbcRowset, который представляет собой подключенный набор строк). Слушатель добавлен в набор строк; и это немедленно обнаружит изменения в наборе строк в приложении (или службе). Но изменения, внесенные извне, по-прежнему нуждаются в каком-то механизме обновления набора строк в приложении (например, периодически выполнять запрос таблицы с использованием таймера).

prasad_ 25.07.2018 11:34
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
7
1 311
1

Ответы 1

Вы хотите создать систему отслеживания измененных данных. Возможно, вы могли бы использовать один, основанный на Кафке.

Вы можете использовать kafka-connect с Дебезиум на нем. Этот соединитель сначала делает снимок вашей таблицы, а затем читает binlog mysql, чтобы иметь возможность иметь согласованную тему kafka с вставкой / изменением / удалением в таблице.

Если вы не хотите его использовать, возможно, вы можете создать вилку кода, чтобы использовать то же самое, что и они, просто изменив вывод так, чтобы он был слушателем вашего приложения.

На самом деле нет необходимости делать вилки; при необходимости вы также можете использовать Debezium в качестве встроенная библиотека в своих Java-приложениях, позволяя при необходимости вручную обрабатывать сообщения об изменениях. (Отказ от ответственности: я руководитель проекта Debezium)

Gunnar 25.07.2018 15:30

Эй, я не знал этой замечательной функции встраивания дебезиума. Действительно мило.

wargre 25.07.2018 15:34

Другие вопросы по теме