Just select for update skipped locked. Table is partitioned to keep unprocessed small.