I am also trying to understand the behavior but slightly confused. Below is my scenario and would like to confirm the behavior.
- Initiated two external task client workers for the same topic with lock duration of 30 seconds. I reckon this means that each workers fetch and lock operation will be locked for 30 seconds. In other words, they will not fetch the task for the subscribed topic for 30 seconds
.lockDuration(30000) // 30 seconds
- Every time a retry needs to be done will set below values in handle failure, assuming
maxRetry = 2
.setRetryTimeout(2000) // 2 seconds
.setRetries(maxRetry - 1)
I also have asyncResponseTimeout () configured as 10000 i.e. 10 seconds
With
retriesandretryTimout, workers can specify a retry strategy. When settingretriesto a value > 0, the task can be fetched again afterretryTimeoutexpires. When setting retries to 0, a task can no longer be fetched and an incident is created for this task.
If above is applied to my scenario, then after 2 seconds, this task is available for fetching but it can only be fetched by a worker(s) if lock duration is expired? Is my understanding correct?
How asyncResponseTimeout affects it?
What values I need to use if retries needs to be done for 30 seconds?
Please help me to understand it.
Thanks