When using the distributor the behavior of retries and the related message flow is different between major versions.
Immediate Retries are always performed on the worker.
The behavior of Delayed Retries is different between major versions.
Delayed Retries has two configurable items TimeIncrease and NumberOfRetries.
The message will be retried on any available worker. Message processing is not sticky to the worker.
The Delayed Retries policy is only applied on the distributor for both NumberOfRetries and TimeIncrease settings.
The distributor has a .retries queue where a message is forwarded to in case of an error. Then the distributor processes this message, when the retry limit has been reached the message will be forwarded to the error queue or else scheduled for retry by the distributor.
Due to the behavioral differences between major versions it is advised to have the SecondLevelRetriesConfig exactly the same on both the distributor and the workers even though it could be that settings are ignored.
It is assumed that NumberOfRetries and TimeIncrease are the same on the distributor and the workers.