What is the best way to implement long time retry for downstream service unavailble, increasing activity timeout or cronjob workflow?

Take a look at forum post here.
Not sure which SDK you are using, for Java we have samples for each of the mentioned options here and looking into adding for other SDKs.
For your use case would look at the “infrequent poll” option.