As ildjarn suggests, use recursion instead of a loop:
let rec consumer() = async {
let! item = ag.AsyncGet()
match item with
| Some(url) ->
printfn "Consuming %s" url
...
return! consumer() // recursive call only in this case
| None ->
printfn "Done" }