Skip to content

ariefrahmansyah/nsq-middleware

Repository files navigation

nsq-middleware GoDoc CircleCI Coverage Status GoReportCard

NSQ-Middleware is middleware for your NSQ consumer handler function. It's heavily inspired by negroni.

Bundled Middleware

  1. Recovery
  2. Logger
  3. Prometheus

Usage

We can create new middleware object that implement nsq.Handler interface and use it in NSQ-Middleware object using Use method.

We also can use nsq.HandlerFunc that we already created before.

// Create NSQ-Middleware object.
nsqMid := nsqmiddleware.New()

// Optional: Use three bundled middleware.
nsqMid.Use(nsqm.NewRecovery())
nsqMid.Use(nsqm.NewLogger())
nsqMid.Use(nsqm.NewPrometheus())

// Create middleware object that implement nsq.Handler interface.
type Middleware1 struct{}
func (m1 Middleware1) HandleMessage(message *nsq.Message, next nsq.HandlerFunc) error {
	log.Printf("Middleware 1:\t%s\n", message.Body)
	return next(message)
}

// Use Middleware1.
nsqMid.Use(Middleware1{})

// We may already have nsq.HandlerFunc.
func handlerFunc1(message *nsq.Message) error {
	log.Printf("Handler Func 1:\t%s\n\n", message.Body)
	message.Finish()
	return nil
}

// Let's use it too.
nsqMid.UseHandlerFunc(handlerFunc1)

consumer, _ := nsq.NewConsumer(topicName, channelName, nsq.NewConfig())
consumer.AddHandler(nsqMid)
consumer.ConnectToNSQD(nsqdAddress)

Check example package for more usage examples.

About

NSQ-Middleware is middleware handler for your NSQ consumer.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages