We all use Job Schedulers for that. You run it every day once, select everything that is older than x month and then kill it. One word of warning, though (well, actually, a bit more):
- use bulkDelete()
- throttle the amount of rows to delete (docs say 1000 max., do not do it. Try 50 at a time, wait for result, if OK, next 50, etc).