Files
2015-02-06 22:03:05 -08:00

39 lines
799 B
Go

package nsqpublisher
import (
"github.com/bitly/go-nsq"
"github.com/didiercrunch/doormanserver/shared"
"gopkg.in/mgo.v2/bson"
)
type NsqPublisher struct {
Config *nsq.Config
Producer *nsq.Producer
}
func (pub *NsqPublisher) InitConfig() {
pub.Config = nsq.NewConfig()
}
func (pub *NsqPublisher) Init() error {
var err error
pub.InitConfig()
pub.Producer, err = nsq.NewProducer(shared.GetParams().NSQ.NSQLookupdUrl, pub.Config)
return err
}
func (pub *NsqPublisher) Stop() error {
pub.Producer.Stop()
return nil
}
func (pub *NsqPublisher) Emit(doormanId bson.ObjectId, doorman shared.AsDoormanUpdatePayloader) error {
topic := doormanId.Hex()
if data, err := doorman.AsDoormanUpdatePayload(); err != nil {
return err
} else {
return pub.Producer.Publish(topic, data)
}
}