⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

PG LISTEN/NOTIFY异步消息

学习使用PostgreSQL的LISTEN/NOTIFY实现异步消息通信 · 难度:入门 · +15XP

LISTEN/NOTIFY机制

LISTEN/NOTIFY是PostgreSQL内置的异步消息系统,允许一个会话发送通知,其他监听该通道的会话接收。

基本用法

-- 会话A:监听通道
LISTEN my_channel;

-- 会话B:发送通知 NOTIFY my_channel, 'Hello from session B';

-- 会话A会收到异步通知

结合触发器使用

-- 创建触发器函数
CREATE OR REPLACE FUNCTION notify_new_order()
RETURNS trigger AS $$
BEGIN
    PERFORM pg_notify('new_order', 
        json_build_object(
            'order_id', NEW.id,
            'customer', NEW.customer_name,
            'total', NEW.total
        )::text
    );
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- 创建触发器 CREATE TRIGGER order_notify_trigger AFTER INSERT ON orders FOR EACH ROW EXECUTE FUNCTION notify_new_order();

在应用中使用

-- 监听通道
LISTEN new_order;

-- 插入订单触发通知 INSERT INTO orders (customer_name, total) VALUES ('张三', 199.99);

-- 获取通知(在psql中) -- Asynchronous notification "new_order" received from server process with payload "{"order_id":1,"customer":"张三","total":199.99}"

通知特性

特性说明
异步发送者不等待接收者
无持久化通知不存储在数据库中
最大负载8000字节

练习提示

创建一个库存更新通知系统,当库存低于阈值时自动发送通知。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 131 篇
0 完成
🔥 0