簡體   English   中英

從Postgres消息隊列中刪除通知

[英]Deleting notifications from postgres message queue

我有一個功能,其中有一個表,其中每個插入都必須使用JSON通知通道。 我在觸發器函數中使用pg_notify來做到這一點。 現在,我必須管理該消息隊列,以便如果其大小達到80%,則必須刪除較舊的消息,直到達到50%。 我已經在網上搜索過,但沒有收到任何答案。 誰能幫忙。

我正在使用下面提到的觸發器進行通知。

CREATE OR REPLACE FUNCTION action_notify() RETURNS TRIGGER AS $BODY$
DECLARE
    action_json    TEXT;
BEGIN
    RAISE DEBUG 'begin: action_notify';
    action_json    := '{"action": "'||NEW.action||'"
                         "action_params": "'||NEW.action_params||'"}';

    PERFORM pg_notify(TG_TABLE_NAME, action_json);
    RAISE DEBUG 'end: action_notify';
    RETURN NULL;
END;
$BODY$ LANGUAGE plpgsql;

如果有人可以指導我如何管理此消息隊列,那將是非常有用的幫助。 我沒有使用任何其他消息隊列,例如rabbitmq ...只是從postgres管理它。什么是實現此目的的最佳方法?

使用PostgreSQL 9.3。

簡短版:您不能使用LISTENNOTIFY來做到這一點。 這是一個可靠的傳遞隊列,沒有清除舊條目的功能。

您可能應該將其插入表中,而不是將消息作為通知有效內容傳遞,然后NOTIFY表已更改。 您可以使用定期作業來管理表的大小,以截斷舊條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM