Git Product home page Git Product logo

delayqueue's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

delayqueue's Issues

callbak开放出来

1.希望 callback处理函数增加 WithCallback 开放出来
2.希望能增加队列阻塞监控

感谢~

consume error: pending2ReadyScript failed: ERR Error running script

当key比较多的时候会报如下错误
consume error: pending2ReadyScript failed: ERR Error running script (call to f_7450a9e992a62833484b2567e7d1b1f70c56eb20): @user_script:8: user_script:8: too many results to unpack
好像是需要限制unpack接收的参数数量?

没有删除吗

一般来讲,如果到达时间点消费的时候订单状态已经支付了,在消费的时候查表判断吗,感觉不太优雅,不能在支付回调中主动删除队列任务吗

consume error: pending2ReadyScript failed: ERR bad lua script for redis cluster, first parameter of redis.call/redis.pcall must be a single literal string

使用时报错

各个版本

  • github.com/redis/go-redis/v9 v9.4.0
  • github.com/hdt3213/delayqueue v1.0.4
  • Redis: 阿里云集群版 Redis 6.0 | 集群版(16G,共2分片) | 云原生

使用方式

初始化时使用了UseHashTagKey()
delayQueue := delayqueue.NewQueue(queueName, RedisInstance, consumer, delayqueue.UseHashTagKey()).WithConcurrent(concurrent)

ttl设置很长时间会不会有问题

我是当定时队列使用的,我们的需求是T(工作日)+1执行,所以消息在redis里面的时候可能会有点长
例如国庆是插入消息后的第八天取出消息

担心ttl设置的比较长之后会不会被自动清理掉了

关于大量任务

func (q *DelayQueue) SendScheduleMsgs(payloads []string, t []time.Time, opts ...interface{}) error {
	retryCount := q.defaultRetryCount
	for _, opt := range opts {
		switch o := opt.(type) {
		case retryCountOpt:
			retryCount = uint(o)
		case msgTTLOpt:
			q.msgTTL = time.Duration(o)
		}
	}
	pipe := q.redisCli.TxPipeline() // 这里是在warpper里添加的
	now := time.Now()
	ctx := context.Background()
	for i := 0; i < len(t); i++ {
		idStr := uuid.Must(uuid.NewRandom()).String()
		msgTTL := t[i].Sub(now) + q.msgTTL
		pipe.Set(ctx, q.genMsgKey(idStr), payloads[i], msgTTL)
		pipe.HSet(ctx, q.retryCountKey, idStr, strconv.Itoa(int(retryCount)))
		values := map[string]float64{idStr: float64(t[i].Unix())}
		var zs []redis.Z
		for member, score := range values {
			zs = append(zs, redis.Z{
				Score:  score,
				Member: member,
			})
		}
		pipe.ZAdd(ctx, q.pendingKey, zs...)
	}
	_, err := pipe.Exec(ctx)
	if err != nil {
		return fmt.Errorf("push to pending failed: %v", err)
	}
	return nil
}

就不提pr了,作者看下,这样写是否有问题.如果可行的话可以手动修改下

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.