Continuously amazed by what you can do with few tools, as long as Postgres is a part of your toolkit.
I recently developed a distributed queue and it works really great - benchmarks great too, with no race conditions or conflicts. I used SKIP LOCKED so that workers can compete safely.
You can also have multiple workers across nodes avoid conflict by using session wide mutexes i.e. pg advisory lock.
Just do a reservation on the record with the actor ID.
Advisory locks are preferred for this anyways because holding a lot of SELECT FOR UPDATE doesn’t scale too well.
Edit: Actually I checked this again and apparently the advice has now changed to the inverse.