2016-09-17 64 views
2

我目前的架構有多個具有單一存儲點的web應用程序 - 我的postgres數據庫。現在,我想在數據庫中發生某些事情時執行一些任務,例如在新用戶創建時發送電子郵件,如果某些值已更改通知管理員等。如何正確使用Postgres觸發器中的任務隊列

因此,天真的方法是創建噸和噸的觸發器,這些觸發器對於每個動作都是特定的。現在,我不認爲這是一個好主意,因爲所有的維護和加載數據庫。

我也不認爲有一個觸發器能夠執行LISTEN/NOTIFY到節點服務器也是一個好主意,因爲隨着事物規模的擴大,這個解決方案變得很麻煩。

潛在的解決方案是有一個任務隊列,如celery和rabbitMQ或另一個解決方案,並以某種方式從數據庫觸發器啓動任務。它的規模和未來可以相對容易管理

我的問題是:什麼是將postgresql觸發器與像芹菜這樣的任務隊列集成在一起的適當方法(即時通訊給其他建議)。我只是不知道我在想它的方式是否合適。

謝謝你的幫助。

回答

0

最好的解決方案是有一個單獨的進程,可以接收進程間或HTTP通知,指示數據庫中可能存在需要處理的數據。

它會處理進程啓動時計劃的所有內容,然後在可能存在某些數據時偵聽傳入通知。

此外,您可以添加一個偶爾的民意調查,如每分鐘一次。

你應該遠離觸發器,它們需要一個額外的連接本身需要監測,如果它中斷,這反過來使解決方案相當複雜。

相關問題