1
我創建了以下觸發器來跟蹤postgres表上的所有更改。Postgresql LISTEN/NOTIFY回顧
DROP TRIGGER tr_request_update_notify ON requests;
CREATE OR REPLACE FUNCTION request_update_notify() RETURNS trigger as $$
BEGIN
PERFORM pg_notify('request_update_notify', json_build_object('table', TG_TABLE_NAME, 'id', NEW.id, 'event', NEW.event, 'type', TG_OP)::text);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER tr_request_update_notify AFTER UPDATE or INSERT ON requests FOR EACH ROW EXECUTE PROCEDURE request_update_notify();
另一個應用程序將偵聽連接併爲每個事件應用適當的處理。
如果發生事件並且我的應用程序未啓動,則該事件將不會被處理。有沒有辦法對所有錯過的通知進行回顧?
甚至合併表的想法和通知所以新的事件來通知和舊的可以從表中讀取。這樣就不需要輪詢 –
使用NOTIFY/LISTEN的想法是避免輪詢表。我可能會部分使用建議的解決方案並管理序列號。因此,在啓動時,我的應用程序會處理所有錯過的通知(可以使用序號找出),然後再次聽DB。 – Charmi