- Add a "retry count" to the object (which implements Runnable). Increment the counter on failure and if the counter is less than N, then place the Runnable back in the queue. After N retries, log a failure and give up.
- Set up a separate thread, and upon failure, queue of the object to run again after a period of time. Continue to retry every M seconds up to N times, then give up.
- Similar to above; initially sleep for a long period of time (an hour), then try N times over M minutes before giving up.
- Increase the wait interval, M, betwen retries; keep trying until the interval reaches a defined maximum.
As far as I could determine, there isn't one. Hasn't everyone at one point had to write some sort of retry logic? Why isn't there a framework of some sort for that?