sunng87 / diehard

Clojure resilience library for flexible retry, circuit breaker and rate limiter
Eclipse Public License 2.0
327 stars 26 forks source link

question on future(...) contruct use #30

Open dalegaspi opened 4 years ago

dalegaspi commented 4 years ago

is there an equivalent construct here that allows something like this:

(require '[diehard.core :as dh])
(dh/with-retry {:retry-on TimeoutException
                :max-retries 3}
  (fetch-data-from-the-moon-future))

where fetch-data-from-the-moon-future is a future(...) and of course the function will return another future?

...i mean it doesn't have to be a future, it can be a thread or anything else as long as async construct equivalents are available.

sunng87 commented 4 years ago

At the moment it is not possible. Can you put the synchronise block into a future, like

(defn fetch-data-from-the-moon-future []
  (future
    (dh/with-retry {:retry-on TimeoutException
                           :max-retries 3}
      (fetch-data-from-the-moon))))