「PostgreSQL で安くて早くてうまい MQ 作ってね」的ミッションがどこからともなく降ってきたので、色々調べて試してみたところ、案外よい方法が見つかったので、まとめてみた。 [4/24] 複数キューを扱う場合の方法を tableoid を利用するように更新。 [4/27] フィルタ条件を付ける場合の記法について追記(WHERE 句内の評価順の明示的指定) [4/30] 優先順位に ORDER BY は利用できない旨追記 鍵は advisory lock。PostgreSQL 8.2 以降の機能だ。 メッセージキューと言っても、安くて早いわけだからもちろんフルフルの高機能なわけなく、いろいろ制限がある。 receiver は複数可。メッセージは receiver の一つが受信する。ブロードキャスト/マルチキャストは対象外。 ack あり。ack せずに receiver が落ちた場合