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 }