[英]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。
簡短版:您不能使用LISTEN
和NOTIFY
來做到這一點。 這是一個可靠的傳遞隊列,沒有清除舊條目的功能。
您可能應該將其插入表中,而不是將消息作為通知有效內容傳遞,然后NOTIFY
表已更改。 您可以使用定期作業來管理表的大小,以截斷舊條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.