github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/mq/job_queue_test.go (about)

     1  package mq_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/sirupsen/logrus"
     9  	"github.com/stretchr/testify/assert"
    10  
    11  	"github.com/artisanhe/tools/mq"
    12  	mq_redis "github.com/artisanhe/tools/mq/redis"
    13  	"github.com/artisanhe/tools/redis"
    14  )
    15  
    16  var r = &redis.Redis{
    17  	Host: "redis.staging.g7pay.net",
    18  	Port: 36379,
    19  }
    20  
    21  func init() {
    22  	logrus.SetLevel(logrus.DebugLevel)
    23  
    24  	r.MarshalDefaults(r)
    25  	r.Init()
    26  }
    27  
    28  func TestJobQueue(t *testing.T) {
    29  	tt := assert.New(t)
    30  
    31  	receiver := mq.NewJobQueue(
    32  		mq_redis.NewRedisBroker(r.GetCache().Pool, "mq-"),
    33  		mq_redis.NewRedisBackend(r.GetCache().Pool, "mq-"),
    34  	)
    35  
    36  	for i := 0; i < 10; i++ {
    37  		task, err := receiver.Publish("some-test", "test2", []byte(fmt.Sprintf("data %d", i)))
    38  		tt.NoError(err)
    39  		fmt.Println(task.ID)
    40  
    41  		if i%2 == 0 {
    42  			receiver.Cancel(task.ID)
    43  		}
    44  	}
    45  
    46  	receiver.RegisterReceiver(func(status *mq.TaskStatus) error {
    47  		fmt.Println(status.ID, status.Status)
    48  		return nil
    49  	})
    50  
    51  	receiver.StartReceiver(3)
    52  
    53  	worker := mq.NewJobQueue(
    54  		mq_redis.NewRedisBroker(r.GetCache().Pool, "mq-"),
    55  		mq_redis.NewRedisBackend(r.GetCache().Pool, "mq-"),
    56  	)
    57  
    58  	worker.Register("test2", func(task *mq.Task) (interface{}, error) {
    59  		time.Sleep(1 * time.Second)
    60  		logrus.Printf("%s %s %s", task.Subject, task.ID, string(task.Data))
    61  		return nil, nil
    62  	})
    63  
    64  	worker.StartWorker("some-test", 2)
    65  
    66  	time.Sleep(6 * time.Second)
    67  }