PGMQ (PostgreSQL Message Queue)#
https://github.com/pgmq/pgmq
PGMQ 是一個基於 PostgreSQL 的輕量消息隊列
使用 PostgrSQL Extension 實現
因為只有基於 PostgreSQL 所以對於需要非同步處理的輕量業務需求非常適合
目前使用的情境是以原有的 API Server + PGMQ + consumer
來做一些非同步任務和第三方服務的 retry 機制
更廣泛的來說
尤其是在業務場景當前只有 PostgreSQL 而不想額外引入 RabbitMQ, 或各大雲端服務的消息隊列解決方案,但是需要 Pub/Sub, SQS 相似的應用場景時
PGMQ 是一個不錯的選擇
與其他消息隊列更詳細的比較與使用範例可以參考以下文章:
為什麼選擇 PGMQ?在 PostgreSQL 實現 ACID 交易的消息隊列
PGMQ-SQLAlchemy 0.2.0 新功能介紹#
- 新增
op(PGMQOperation) 模組: 正式 支援在同一個 Transaction 中同時處理業務邏輯和消息隊列操作,確保消息與業務數據的操作是 ACID 的 - 新增 FastAPI,
asyncioConsumer 的 Pub/Sub 範例: 示範如何在 FastAPI 中使用 PGMQ-SQLAlchemy,並實現非同步的消息消費者,這個 example 也被加在 系統測試 中來保證功能的正確性 - 提高單元(整合)測試覆蓋率: 目前單元(整合)測試覆蓋率達到
98.72%,為什麼說是 “單元(整合)” 測試呢? 因為 CI 使用真實的 Postgres DB 來跑測試,所以也可以算是整合測試 - 官方文件支援 Dark Mode: 把 sphinx_rtd_theme 換成 furo 正式支援 Dark Mode
GitHub Coding Agent#
還會想繼續維護這個 package 主要是因為想測試 GitHub Coding Agent 的效果如何,以下是一些我覺得成果還不錯的 PR:






