@loren Thanks for the elaborative answer. Solutions 1 & 2(mentioned by you) are better but those force all the consumers to use temporal. We don’t want to force it on consumers so we probably we will go will solution 3.
In Solution 3, We were thinking to twek the solution and instead of using 1 async activity with a while loop, we can use 2 sync activities
- first actvity that calls serviceB and starts the work.
- Another parallel activity with shorter retry times (equivalent to sleep time in your example), will work as a poller for the completion status. This activity will fail if the completion status is not returned in specified time duration after no of retries.
Do you see any caveats using this alternative solution?
(Was referring to this thread on infrequent pollers)
@bergundy Thanks for pointing to the caveats. We will also include the runID while generating the IdempotencyToken
. Similar suggestion I found in the doc here