FOR UPDATE SKIP LOCKED cho phép nhiều worker lấy job chưa bị lock, bỏ qua row đang được worker khác xử lý. Đây là pattern phổ biến cho queue nhẹ trong PostgreSQL.
Ví dụ:
sql
WITH next_job AS (
SELECT id FROM jobs
WHERE status = 'pending'
ORDER BY created_at
FOR UPDATE SKIP LOCKED
LIMIT 1
)
UPDATE jobs SET status = 'running'
WHERE id IN (SELECT id FROM next_job)
RETURNING *;Cần thêm retry, visibility timeout, dead-letter status và index phù hợp nếu queue lớn.