Как запустить Java-процесс, когда таблица postgresql была обновлена ​​в базе данных - PullRequest
0 голосов
/ 23 сентября 2019

Система A - обновляет таблицу postgresql, например, Тест , Каждый раз, когда таблица обновляется с новой записью,

Система B (Spring boot project) - должен как-то прослушать dbChange (Test) и прочитать новые записи

Я пытался @Eventlistener в системе B , чтобы получить обновленные данные, но не повезло.Может кто-нибудь помочь, как получить данные из таблицы в отдельной системе B, когда таблица была обновлена?

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Вы видели "TRIGGER" для postgres?Это позволит вам сделать что-то после или до того, как будет выполнено определенное действие.Каждый триггер связан с определенной таблицей или представлением.

Документация Postgress гласит:

CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }  
    ON table  
    [ FROM referenced_table_name ]  
    [ NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } ]  
    [ FOR [ EACH ] { ROW | STATEMENT } ]  
    [ WHEN ( condition ) ]  
    EXECUTE PROCEDURE function_name ( arguments )  

, где событие может быть одним из:

INSERT,  
UPDATE [ OF column_name [, ... ] ],  
DELETE,  
TRUNCATE  

И простое описание:

CREATETRIGGER создает новый триггер.Триггер будет связан с указанной таблицей или представлением и будет выполнять заданную функцию имя_функции, когда происходят определенные события.

Триггер может быть указан для запуска до попытки выполнения операции в строке (до проверки ограничений ипопытка INSERT, UPDATE или DELETE);или после завершения операции (после проверки ограничений и завершения INSERT, UPDATE или DELETE);или вместо операции (в случае вставки, обновления или удаления в представлении).Если триггер срабатывает до или вместо события, он может пропустить операцию для текущей строки или изменить вставляемую строку (только для операций INSERT и UPDATE).Если триггер срабатывает после события, все изменения, включая эффекты других триггеров, «видны» для триггера.

Если вы хотите прочитать больше, вы можете прочитать официальный Postgres 'документация

Вы можете использовать триггеры для выполнения HTTP (S) -запросов к одной конкретной конечной точке, чтобы сообщить вашему весеннему приложению, что что-то только что изменилось в вашей БД.

0 голосов
/ 23 сентября 2019

Вы можете использовать RepositoryEventHandler для обработки событий персистентности (после добавления, после обновления) и публикации событий с использованием системы обмена сообщениями (RabbitMQ, ActiveMQ, Kafka)

enter image description here

https://www.baeldung.com/spring-data-rest-events

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...