i have not used cursors directly. instead i use the DAL and sort on timestamp usually. when i complete the task, i post a new task the the queue with the last processed timestamp as an argument. Note that you will still have to deal with items that have a duplicate timestamp, but i have been able to make it work for me.
good luck. cfh