44
55use Tarantool \JobQueue \Handler \RetryStrategy \LimitedRetryStrategy ;
66use Tarantool \JobQueue \Handler \RetryStrategy \RetryStrategyFactory ;
7+ use Tarantool \JobQueue \JobOptions ;
78use Tarantool \Queue \Queue ;
89use Tarantool \Queue \Task ;
10+ use Tarantool \Queue \TtlOptions ;
911
1012class RetryHandler implements Handler
1113{
1214 private $ handler ;
1315 private $ retryStrategyFactory ;
1416
1517 private static $ defaults = [
16- ' retry_limit ' => 2 ,
17- ' retry_attempt ' => 1 ,
18- ' retry_strategy ' => RetryStrategyFactory::LINEAR ,
18+ JobOptions:: RETRY_LIMIT => 2 ,
19+ JobOptions:: RETRY_ATTEMPT => 1 ,
20+ JobOptions:: RETRY_STRATEGY => RetryStrategyFactory::LINEAR ,
1921 ];
2022
2123 public function __construct (Handler $ handler , RetryStrategyFactory $ retryStrategyFactory )
@@ -27,10 +29,10 @@ public function __construct(Handler $handler, RetryStrategyFactory $retryStrateg
2729 public function handle (Task $ task , Queue $ queue ): void
2830 {
2931 $ data = $ task ->getData () + self ::$ defaults ;
30- $ attempt = $ data [' retry_attempt ' ];
32+ $ attempt = $ data [JobOptions:: RETRY_ATTEMPT ];
3133
32- $ strategy = $ this ->retryStrategyFactory ->create ($ data [' retry_strategy ' ]);
33- $ strategy = new LimitedRetryStrategy ($ strategy , $ data [' retry_limit ' ]);
34+ $ strategy = $ this ->retryStrategyFactory ->create ($ data [JobOptions:: RETRY_STRATEGY ]);
35+ $ strategy = new LimitedRetryStrategy ($ strategy , $ data [JobOptions:: RETRY_LIMIT ]);
3436
3537 if (null === $ delay = $ strategy ->getDelay ($ attempt )) {
3638 $ this ->handler ->handle ($ task , $ queue );
@@ -39,7 +41,7 @@ public function handle(Task $task, Queue $queue): void
3941 }
4042
4143 // TODO replace these 2 calls with an atomic one
42- $ queue ->put ([' retry_attempt ' => $ attempt + 1 ] + $ data , [' delay ' => $ delay ]);
44+ $ queue ->put ([JobOptions:: RETRY_ATTEMPT => $ attempt + 1 ] + $ data , [TtlOptions:: DELAY => $ delay ]);
4345 $ queue ->delete ($ task ->getId ());
4446 }
4547}
0 commit comments