Source File
healthcheck.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 ()// healthchecker is responsible for pinging broker periodically// and call user provided HeathCheckFunc with the ping result.type healthchecker struct {logger *log.Loggerbroker base.Broker// channel to communicate back to the long running "healthchecker" goroutine.done chan struct{}// interval between healthchecks.interval time.Duration// function to call periodically.healthcheckFunc func(error)}type healthcheckerParams struct {logger *log.Loggerbroker base.Brokerinterval time.DurationhealthcheckFunc func(error)}func newHealthChecker( healthcheckerParams) *healthchecker {return &healthchecker{logger: .logger,broker: .broker,done: make(chan struct{}),interval: .interval,healthcheckFunc: .healthcheckFunc,}}func ( *healthchecker) () {if .healthcheckFunc == nil {return}.logger.Debug("Healthchecker shutting down...")// Signal the healthchecker goroutine to stop..done <- struct{}{}}func ( *healthchecker) ( *sync.WaitGroup) {if .healthcheckFunc == nil {return}.Add(1)go func() {defer .Done():= time.NewTimer(.interval)for {select {case <-.done:.logger.Debug("Healthchecker done").Stop()returncase <-.C::= .broker.Ping().healthcheckFunc().Reset(.interval)}}}()}
![]() |
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. |