Lets say I have big SQL table with "scheduled tasks" - each row has time of day, when the action should be executed - for example send email. And there are multiple workers (as Azure recommends) to process these actions. How to implement this in a way, that every row will be processed only once?
I know about Azure Queues, they are awesome and I am using them for all cases where work "comes from outside", and they take care about "only one consumer will read the message" and also "when the consumer crash, the message will be given to another in a minute". However, I dont see how to implement this for recurring scheduled jobs. I could implement some "scheduler" worker to read from SQL DB and insert to queue, but then this worker become the same problem - there can be only one, therefore no scaling, and if it fail (crash, update), all the work stops.
Also I've read about Using Tables as Queues (or here), but they explicitely warn about heavy locking (escalating to table locks), which will become a problem when the table is subject to frequent changes - and that is my case, there are frequent inserts of new items.
Any ideas besides this SQL locks? Anything special on Azure to help me with this?