postgresql - java - разбудить приложение, когда что-то происходит в базе данных - PullRequest
7 голосов
/ 10 ноября 2011

Я написал Java-приложение, которое должно запускаться или просыпаться, когда «что-то» происходит в базе данных.Например, вставка в пользовательскую таблицу должна инициировать отправку обычного приветствия, пароля, ... писем.

Каков наиболее распространенный способ сделать это?Я могу написать свое приложение так, чтобы оно выполняло следующий запрос, скажем, каждую секунду:

select mail from user where mail_sent = false

Но это опрос, и я бы хотел его избежать.Есть ли способ запустить или разбудить мое Java-приложение (push), инициированное изменением в базе данных?

Cheers!

Ответы [ 4 ]

3 голосов
/ 10 ноября 2011

Триггеры в PostgreSQL могут быть написаны на множестве языков, среди которых PL / Java. Вы можете установить триггер для таблиц, которые требуют этого мониторинга для соответствующих действий (вставка, удаление, обновление ...) и чтобы триггер позаботился об уведомлении. Это может потребовать некоторой формы межпроцессного взаимодействия, но если и триггер, и клиент написаны на Java, это не должно быть слишком сложным.

2 голосов
/ 10 ноября 2011

Взгляните на NOTIFY

1 голос
/ 16 апреля 2015

Попробуй это .. Это легко понять и очень поможет

https://wiki.postgresql.org/wiki/PgNotificationPoller

0 голосов
/ 10 ноября 2011

Я не думаю, что можно запустить приложение. Однако, когда у вас запущено приложение, оно может подписаться на прослушивание событий. Вы можете использовать триггеры для публикации (уведомления) событий для определенных действий.

Когда приложение уведомляется о событии, оно может ответить определенными действиями. См. сайт postgresql для примера .

...