mirror of
https://github.com/go-eagle/eagle.git
synced 2025-09-26 20:41:26 +08:00

* chore: upgrade go to v1.19 * chore: upgrade golangci-lint to v3.6.0 * chore: setup golangci-lint by using go install * test: fix unit test
57 lines
1.0 KiB
Go
57 lines
1.0 KiB
Go
package redis
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
"github.com/hibiken/asynq"
|
|
)
|
|
|
|
const (
|
|
// QueueCritical queue priority
|
|
QueueCritical = "critical"
|
|
QueueDefault = "default"
|
|
QueueLow = "low"
|
|
)
|
|
|
|
// Server async server
|
|
type Server struct {
|
|
clientOpt asynq.RedisClientOpt
|
|
|
|
// async server
|
|
srv *asynq.Server
|
|
mux *asynq.ServeMux
|
|
}
|
|
|
|
// NewServer new async server
|
|
func NewServer(redisOpt asynq.RedisClientOpt, asyncCfg asynq.Config) *Server {
|
|
srv := &Server{
|
|
srv: asynq.NewServer(redisOpt, asyncCfg),
|
|
mux: asynq.NewServeMux(),
|
|
}
|
|
|
|
return srv
|
|
}
|
|
|
|
// Start async server
|
|
func (s *Server) Start(ctx context.Context) error {
|
|
err := s.srv.Run(s.mux)
|
|
if err != nil {
|
|
return errors.Wrapf(err, "failed to run async server")
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// Stop async server
|
|
func (s *Server) Stop(ctx context.Context) error {
|
|
s.srv.Shutdown()
|
|
return nil
|
|
}
|
|
|
|
// RegisterHandler register handler
|
|
func (s *Server) RegisterHandler(pattern string, handler func(context.Context, *asynq.Task) error) {
|
|
s.mux.HandleFunc(pattern, handler)
|
|
}
|