Will this work?
select messageid from messages where messageid in ( select messageid from( select messageid, RANK() over (order by messageid asc) as msg_rank from messages ) where msg_rank=1 ) for update skip locked;