Source File
forwarder.go
Belonging Package
github.com/hibiken/asynq
// Copyright 2020 Kentaro Hibino. All rights reserved.// Use of this source code is governed by a MIT license// that can be found in the LICENSE file.package asynqimport ()// A forwarder is responsible for moving scheduled and retry tasks to pending state// so that the tasks get processed by the workers.type forwarder struct {logger *log.Loggerbroker base.Broker// channel to communicate back to the long running "forwarder" goroutine.done chan struct{}// list of queue names to check and enqueue.queues []string// poll interval on averageavgInterval time.Duration}type forwarderParams struct {logger *log.Loggerbroker base.Brokerqueues []stringinterval time.Duration}func newForwarder( forwarderParams) *forwarder {return &forwarder{logger: .logger,broker: .broker,done: make(chan struct{}),queues: .queues,avgInterval: .interval,}}func ( *forwarder) () {.logger.Debug("Forwarder shutting down...")// Signal the forwarder goroutine to stop polling..done <- struct{}{}}// start starts the "forwarder" goroutine.func ( *forwarder) ( *sync.WaitGroup) {.Add(1)go func() {defer .Done():= time.NewTimer(.avgInterval)for {select {case <-.done:.logger.Debug("Forwarder done")returncase <-.C:.exec().Reset(.avgInterval)}}}()}func ( *forwarder) () {if := .broker.ForwardIfReady(.queues...); != nil {.logger.Errorf("Failed to forward scheduled tasks: %v", )}}
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |