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 }