gitee.com/woood2/luca@v1.0.4/cmd/consumer/internal/middleware/metrics.go (about)

     1  package middleware
     2  
     3  import (
     4  	"context"
     5  	"gitee.com/woood2/luca/cmd/consumer/internal/subscriber"
     6  	"gitee.com/woood2/luca/internal/status"
     7  	"github.com/Shopify/sarama"
     8  	"go.uber.org/zap"
     9  	"time"
    10  )
    11  
    12  func Metrics(res string, logger *zap.Logger) subscriber.MsgMiddleware {
    13  	return func(next subscriber.MsgHandler) subscriber.MsgHandler {
    14  		return func(ctx context.Context, msg *sarama.ConsumerMessage, retry int) (commit bool) {
    15  			defer func(begin time.Time) {
    16  				lvs := []string{"method", res}
    17  				status.RequestCount.With(lvs...).Add(1)
    18  				status.RequestLatency.With(lvs...).Observe(time.Since(begin).Seconds())
    19  			}(time.Now())
    20  			return next(ctx, msg, retry)
    21  		}
    22  	}
    23  }