Pause queues (#15928)
* Start adding mechanism to return unhandled data Signed-off-by: Andrew Thornton <[email protected]> * Create pushback interface Signed-off-by: Andrew Thornton <[email protected]> * Add Pausable interface to WorkerPool and Manager Signed-off-by: Andrew Thornton <[email protected]> * Implement Pausable and PushBack for the bytefifos Signed-off-by: Andrew Thornton <[email protected]> * Implement Pausable and Pushback for ChannelQueues and ChannelUniqueQueues Signed-off-by: Andrew Thornton <[email protected]> * Wire in UI for pausing Signed-off-by: Andrew Thornton <[email protected]> * add testcases and fix a few issues Signed-off-by: Andrew Thornton <[email protected]> * fix build Signed-off-by: Andrew Thornton <[email protected]> * prevent "race" in the test Signed-off-by: Andrew Thornton <[email protected]> * fix jsoniter mismerge Signed-off-by: Andrew Thornton <[email protected]> * fix conflicts Signed-off-by: Andrew Thornton <[email protected]> * fix format Signed-off-by: Andrew Thornton <[email protected]> * Add warnings for no worker configurations and prevent data-loss with redis/levelqueue Signed-off-by: Andrew Thornton <[email protected]> * Use StopTimer Signed-off-by: Andrew Thornton <[email protected]> Co-authored-by: Lauris BH <[email protected]> Co-authored-by: 6543 <[email protected]> Co-authored-by: techknowlogick <[email protected]> Co-authored-by: wxiaoguang <[email protected]>
This commit is contained in:
co-authored by
Lauris BH
6543
techknowlogick
wxiaoguang
parent
27ee01e1e8
commit
a82fd98d53
@@ -57,6 +57,7 @@ func NewRedisQueue(handle HandlerFunc, cfg, exemplar interface{}) (Queue, error)
|
||||
|
||||
type redisClient interface {
|
||||
RPush(ctx context.Context, key string, args ...interface{}) *redis.IntCmd
|
||||
LPush(ctx context.Context, key string, args ...interface{}) *redis.IntCmd
|
||||
LPop(ctx context.Context, key string) *redis.StringCmd
|
||||
LLen(ctx context.Context, key string) *redis.IntCmd
|
||||
SAdd(ctx context.Context, key string, members ...interface{}) *redis.IntCmd
|
||||
@@ -103,6 +104,11 @@ func (fifo *RedisByteFIFO) PushFunc(ctx context.Context, data []byte, fn func()
|
||||
return fifo.client.RPush(ctx, fifo.queueName, data).Err()
|
||||
}
|
||||
|
||||
// PushBack pushes data to the top of the fifo
|
||||
func (fifo *RedisByteFIFO) PushBack(ctx context.Context, data []byte) error {
|
||||
return fifo.client.LPush(ctx, fifo.queueName, data).Err()
|
||||
}
|
||||
|
||||
// Pop pops data from the start of the fifo
|
||||
func (fifo *RedisByteFIFO) Pop(ctx context.Context) ([]byte, error) {
|
||||
data, err := fifo.client.LPop(ctx, fifo.queueName).Bytes()
|
||||
|
||||
Reference in New Issue
Block a user