1111
1212namespace think \queue ;
1313
14+ use Carbon \Carbon ;
1415use Exception ;
1516use RuntimeException ;
1617use think \Cache ;
2223use think \queue \event \JobProcessed ;
2324use think \queue \event \JobProcessing ;
2425use think \queue \event \WorkerStopping ;
26+ use think \queue \exception \MaxAttemptsExceededException ;
2527use Throwable ;
2628
2729class Worker
@@ -59,15 +61,15 @@ public function __construct(Queue $queue, Event $event, Handle $handle, Cache $c
5961 }
6062
6163 /**
62- * @param string $connector
64+ * @param string $connection
6365 * @param string $queue
6466 * @param int $delay
6567 * @param int $sleep
6668 * @param int $maxTries
6769 * @param int $memory
6870 * @param int $timeout
6971 */
70- public function daemon ($ connector , $ queue , $ delay = 0 , $ sleep = 3 , $ maxTries = 0 , $ memory = 128 , $ timeout = 60 )
72+ public function daemon ($ connection , $ queue , $ delay = 0 , $ sleep = 3 , $ maxTries = 0 , $ memory = 128 , $ timeout = 60 )
7173 {
7274 if ($ this ->supportsAsyncSignals ()) {
7375 $ this ->listenForSignals ();
@@ -78,15 +80,15 @@ public function daemon($connector, $queue, $delay = 0, $sleep = 3, $maxTries = 0
7880 while (true ) {
7981
8082 $ job = $ this ->getNextJob (
81- $ this ->queue ->driver ( $ connector ), $ queue
83+ $ this ->queue ->connection ( $ connection ), $ queue
8284 );
8385
8486 if ($ this ->supportsAsyncSignals ()) {
8587 $ this ->registerTimeoutHandler ($ job , $ timeout );
8688 }
8789
8890 if ($ job ) {
89- $ this ->runJob ($ job , $ connector , $ maxTries , $ delay );
91+ $ this ->runJob ($ job , $ connection , $ maxTries , $ delay );
9092 } else {
9193 $ this ->sleep ($ sleep );
9294 }
@@ -231,39 +233,38 @@ protected function listenForSignals()
231233
232234 /**
233235 * 执行下个任务
234- * @param string $connectorName
236+ * @param string $connection
235237 * @param string $queue
236238 * @param int $delay
237239 * @param int $sleep
238240 * @param int $maxTries
239241 * @return void
240242 * @throws Exception
241243 */
242- public function runNextJob ($ connectorName , $ queue , $ delay = 0 , $ sleep = 3 , $ maxTries = 0 )
244+ public function runNextJob ($ connection , $ queue , $ delay = 0 , $ sleep = 3 , $ maxTries = 0 )
243245 {
244246
245- $ job = $ this ->getNextJob ($ this ->queue ->driver ( $ connectorName ), $ queue );
247+ $ job = $ this ->getNextJob ($ this ->queue ->connection ( $ connection ), $ queue );
246248
247249 if ($ job ) {
248- $ this ->runJob ($ job , $ connectorName , $ maxTries , $ delay );
249- return ;
250+ $ this ->runJob ($ job , $ connection , $ maxTries , $ delay );
251+ } else {
252+ $ this ->sleep ($ sleep );
250253 }
251-
252- $ this ->sleep ($ sleep );
253254 }
254255
255256 /**
256257 * 执行任务
257258 * @param Job $job
258- * @param string $connectorName
259+ * @param string $connection
259260 * @param int $maxTries
260261 * @param int $delay
261262 * @return void
262263 */
263- protected function runJob ($ job , $ connectorName , $ maxTries , $ delay )
264+ protected function runJob ($ job , $ connection , $ maxTries , $ delay )
264265 {
265266 try {
266- $ this ->process ($ connectorName , $ job , $ maxTries , $ delay );
267+ $ this ->process ($ connection , $ job , $ maxTries , $ delay );
267268 } catch (Exception | Throwable $ e ) {
268269 $ this ->handle ->report ($ e );
269270 }
@@ -291,32 +292,32 @@ protected function getNextJob($connector, $queue)
291292
292293 /**
293294 * Process a given job from the queue.
294- * @param string $connector
295+ * @param string $connection
295296 * @param Job $job
296297 * @param int $maxTries
297298 * @param int $delay
298299 * @return void
299300 * @throws Exception
300301 */
301- public function process ($ connector , $ job , $ maxTries = 0 , $ delay = 0 )
302+ public function process ($ connection , $ job , $ maxTries = 0 , $ delay = 0 )
302303 {
303304 try {
304- $ this ->event ->trigger (new JobProcessing ($ connector , $ job ));
305+ $ this ->event ->trigger (new JobProcessing ($ connection , $ job ));
305306
306307 $ this ->markJobAsFailedIfAlreadyExceedsMaxAttempts (
307- $ connector , $ job , (int ) $ maxTries
308+ $ connection , $ job , (int ) $ maxTries
308309 );
309310
310311 $ job ->fire ();
311312
312- $ this ->event ->trigger (new JobProcessed ($ connector , $ job ));
313+ $ this ->event ->trigger (new JobProcessed ($ connection , $ job ));
313314 } catch (Exception | Throwable $ e ) {
314315 try {
315316 if (!$ job ->hasFailed ()) {
316- $ this ->markJobAsFailedIfWillExceedMaxAttempts ($ connector , $ job , (int ) $ maxTries , $ e );
317+ $ this ->markJobAsFailedIfWillExceedMaxAttempts ($ connection , $ job , (int ) $ maxTries , $ e );
317318 }
318319
319- $ this ->event ->trigger (new JobExceptionOccurred ($ connector , $ job , $ e ));
320+ $ this ->event ->trigger (new JobExceptionOccurred ($ connection , $ job , $ e ));
320321 } finally {
321322 if (!$ job ->isDeleted () && !$ job ->isReleased () && !$ job ->hasFailed ()) {
322323 $ job ->release ($ delay );
@@ -328,56 +329,56 @@ public function process($connector, $job, $maxTries = 0, $delay = 0)
328329 }
329330
330331 /**
331- * @param string $connector
332+ * @param string $connection
332333 * @param Job $job
333334 * @param int $maxTries
334335 */
335- protected function markJobAsFailedIfAlreadyExceedsMaxAttempts ($ connector , $ job , $ maxTries )
336+ protected function markJobAsFailedIfAlreadyExceedsMaxAttempts ($ connection , $ job , $ maxTries )
336337 {
337338 $ maxTries = !is_null ($ job ->maxTries ()) ? $ job ->maxTries () : $ maxTries ;
338339
339340 $ timeoutAt = $ job ->timeoutAt ();
340341
341- if ($ timeoutAt && time () <= $ timeoutAt ) {
342+ if ($ timeoutAt && Carbon:: now ()-> getTimestamp () <= $ timeoutAt ) {
342343 return ;
343344 }
344345
345346 if (!$ timeoutAt && (0 === $ maxTries || $ job ->attempts () <= $ maxTries )) {
346347 return ;
347348 }
348349
349- $ this ->failJob ($ connector , $ job , $ e = new RuntimeException (
350+ $ this ->failJob ($ connection , $ job , $ e = new MaxAttemptsExceededException (
350351 $ job ->getName () . ' has been attempted too many times or run too long. The job may have previously timed out. '
351352 ));
352353
353354 throw $ e ;
354355 }
355356
356357 /**
357- * @param string $connector
358+ * @param string $connection
358359 * @param Job $job
359360 * @param int $maxTries
360361 * @param Exception $e
361362 */
362- protected function markJobAsFailedIfWillExceedMaxAttempts ($ connector , $ job , $ maxTries , $ e )
363+ protected function markJobAsFailedIfWillExceedMaxAttempts ($ connection , $ job , $ maxTries , $ e )
363364 {
364365 $ maxTries = !is_null ($ job ->maxTries ()) ? $ job ->maxTries () : $ maxTries ;
365366
366- if ($ job ->timeoutAt () && $ job ->timeoutAt () <= time ()) {
367- $ this ->failJob ($ connector , $ job , $ e );
367+ if ($ job ->timeoutAt () && $ job ->timeoutAt () <= Carbon:: now ()-> getTimestamp ()) {
368+ $ this ->failJob ($ connection , $ job , $ e );
368369 }
369370
370371 if ($ maxTries > 0 && $ job ->attempts () >= $ maxTries ) {
371- $ this ->failJob ($ connector , $ job , $ e );
372+ $ this ->failJob ($ connection , $ job , $ e );
372373 }
373374 }
374375
375376 /**
376- * @param string $connector
377+ * @param string $connection
377378 * @param Job $job
378379 * @param Exception $e
379380 */
380- protected function failJob ($ connector , $ job , $ e )
381+ protected function failJob ($ connection , $ job , $ e )
381382 {
382383 $ job ->markAsFailed ();
383384
@@ -391,7 +392,7 @@ protected function failJob($connector, $job, $e)
391392 $ job ->failed ($ e );
392393 } finally {
393394 $ this ->event ->trigger (new JobFailed (
394- $ connector , $ job , $ e ?: new RuntimeException ('ManuallyFailed ' )
395+ $ connection , $ job , $ e ?: new RuntimeException ('ManuallyFailed ' )
395396 ));
396397 }
397398 }
0 commit comments