@@ -449,3 +449,73 @@ func TestHandleAllJobBeforeShutdownConsumerInQueue(t *testing.T) {
449
449
q .Release ()
450
450
assert .Len (t , messages , 2 )
451
451
}
452
+
453
+ func TestRetryCountWithNewMessage (t * testing.T ) {
454
+ controller := gomock .NewController (t )
455
+ defer controller .Finish ()
456
+
457
+ m := mocks .NewMockQueuedMessage (controller )
458
+ m .EXPECT ().Bytes ().Return ([]byte ("test" )).AnyTimes ()
459
+
460
+ messages := make (chan string , 10 )
461
+ count := 1
462
+
463
+ w := NewConsumer (
464
+ WithFn (func (ctx context.Context , m core.QueuedMessage ) error {
465
+ if count % 3 != 0 {
466
+ count ++
467
+ return errors .New ("count not correct" )
468
+ }
469
+ messages <- string (m .Bytes ())
470
+ return nil
471
+ }),
472
+ )
473
+
474
+ q , err := NewQueue (
475
+ WithLogger (NewLogger ()),
476
+ WithWorker (w ),
477
+ WithWorkerCount (1 ),
478
+ )
479
+ assert .NoError (t , err )
480
+
481
+ assert .NoError (t , q .Queue (
482
+ m ,
483
+ job .WithRetryCount (3 ),
484
+ job .WithRetryDelay (50 * time .Millisecond ),
485
+ ))
486
+ assert .Len (t , messages , 0 )
487
+ q .Start ()
488
+ q .Release ()
489
+ assert .Len (t , messages , 1 )
490
+ }
491
+
492
+ func TestRetryCountWithNewTask (t * testing.T ) {
493
+ messages := make (chan string , 10 )
494
+ count := 1
495
+
496
+ w := NewConsumer ()
497
+
498
+ q , err := NewQueue (
499
+ WithLogger (NewLogger ()),
500
+ WithWorker (w ),
501
+ WithWorkerCount (1 ),
502
+ )
503
+ assert .NoError (t , err )
504
+
505
+ assert .NoError (t , q .QueueTask (
506
+ func (ctx context.Context ) error {
507
+ if count % 3 != 0 {
508
+ count ++
509
+ return errors .New ("count not correct" )
510
+ }
511
+ messages <- "foobar"
512
+ return nil
513
+ },
514
+ job .WithRetryCount (3 ),
515
+ job .WithRetryDelay (50 * time .Millisecond ),
516
+ ))
517
+ assert .Len (t , messages , 0 )
518
+ q .Start ()
519
+ q .Release ()
520
+ assert .Len (t , messages , 1 )
521
+ }
0 commit comments