Skip to content

Commit

Permalink
Merge pull request #271 from skateinmars/add-godoc
Browse files Browse the repository at this point in the history
Add high-level godoc for publisher and consumer
  • Loading branch information
jehiah authored Oct 30, 2019
2 parents 0455293 + 441be6f commit b1a08a5
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 4 deletions.
74 changes: 74 additions & 0 deletions doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/*
Package nsq is the official Go package for NSQ (http://nsq.io/).
It provides high-level Consumer and Producer types as well as low-level
functions to communicate over the NSQ protocol.
Consumer
Consuming messages from NSQ can be done by creating an instance of a Consumer and supplying it a handler.
type myMessageHandler struct {}
// HandleMessage implements the Handler interface.
func (h *myMessageHandler) HandleMessage(m *nsq.Message) error {
if len(m.Body) == 0 {
// Returning nil will automatically send a FIN command to NSQ to mark the message as processed.
return nil
}
err := processMessage(m.Body)
// Returning a non-nil error will automatically send a REQ command to NSQ to re-queue the message.
return err
}
func main() {
// Instantiate a consumer that will subscribe to the provided channel.
config := nsq.NewConfig()
consumer, err := nsq.NewConsumer("topic", "channel", config)
if err != nil {
log.Fatal(err)
}
// Set the Handler for messages received by this Consumer. Can be called multiple times.
// See also AddConcurrentHandlers.
consumer.AddHandler(&myMessageHandler{})
// Use nsqlookupd to discover nsqd instances.
// See also ConnectToNSQD, ConnectToNSQDs, ConnectToNSQLookupds.
err = consumer.ConnectToNSQLookupd("localhost:4161")
if err != nil {
log.Fatal(err)
}
// Gracefully stop the consumer.
consumer.Stop()
}
Producer
Producing messages can be done by creating an instance of a Producer.
// Instantiate a producer.
config := nsq.NewConfig()
producer, err := nsq.NewProducer("127.0.0.1:4150", config)
if err != nil {
log.Fatal(err)
}
messageBody := []byte("hello")
topicName := "topic"
// Synchronously publish a single message to the specified topic.
// Messages can also be sent asynchronously and/or in batches.
err = p.Publish(topicName, messageBody)
if err != nil {
log.Fatal(err)
}
// Gracefully stop the producer.
producer.Stop()
*/
package nsq
4 changes: 0 additions & 4 deletions version.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
// Package nsq is the official Go package for NSQ (http://nsq.io/)
//
// It provides high-level Consumer and Producer types as well as low-level
// functions to communicate over the NSQ protocol
package nsq

// VERSION
Expand Down

0 comments on commit b1a08a5

Please sign in to comment.