Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add high-level godoc for publisher and consumer #271

Merged
merged 1 commit into from
Oct 30, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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