代码拉取完成,页面将自动刷新
package nsq
import (
"fmt"
"github.com/golang/glog"
nsq "github.com/nsqio/go-nsq"
)
// PublisherEnv nsq publisher init params
type PublisherEnv struct {
Address string
Config *nsq.Config
}
// Message nsq message publish object
type Message struct {
Topic string
Content []byte
}
// Publisher producer publish interface
type Publisher interface {
Init(*PublisherEnv) error // init function
Publish(*Message) error // publish function
}
type publish struct {
producer *nsq.Producer
}
// NewPublish publisher new function
func NewPublish() Publisher {
return new(publish)
}
func (p *publish) Init(env *PublisherEnv) error {
producer, err := nsq.NewProducer(env.Address, env.Config) // init producer
if err != nil {
glog.Fatalf("nsq connect fail: %v", err)
} else {
p.producer = producer
}
return err
}
func (p *publish) Publish(message *Message) error {
if p.producer != nil {
if message == nil || message.Topic == "" || len(message.Content) == 0 { // check if message is valid
return fmt.Errorf("message object is nil or message topic is nil or message content is nil")
}
err := p.producer.Publish(message.Topic, message.Content) // send message
return err
}
return fmt.Errorf("producer is nil")
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。