54 lines
1.0 KiB
Go
54 lines
1.0 KiB
Go
// nsq_producer/main.go
|
|
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"github.com/nsqio/go-nsq"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
// NSQ Producer Demo
|
|
|
|
var producer *nsq.Producer
|
|
|
|
// 初始化生产者
|
|
func initProducer(str string) (err error) {
|
|
config := nsq.NewConfig()
|
|
producer, err = nsq.NewProducer(str, config)
|
|
if err != nil {
|
|
fmt.Printf("create producer failed, err:%v\n", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func main() {
|
|
nsqAddress := "43.143.245.135:4150"
|
|
err := initProducer(nsqAddress)
|
|
if err != nil {
|
|
fmt.Printf("init producer failed, err:%v\n", err)
|
|
return
|
|
}
|
|
|
|
reader := bufio.NewReader(os.Stdin) // 从标准输入读取
|
|
for {
|
|
data, err := reader.ReadString('\n')
|
|
if err != nil {
|
|
fmt.Printf("read string from stdin failed, err:%v\n", err)
|
|
continue
|
|
}
|
|
data = strings.TrimSpace(data)
|
|
if strings.ToUpper(data) == "Q" { // 输入Q退出
|
|
break
|
|
}
|
|
// 向 'topic_demo' publish 数据
|
|
err = producer.Publish("topic_demo", []byte(data))
|
|
if err != nil {
|
|
fmt.Printf("publish msg to nsq failed, err:%v\n", err)
|
|
continue
|
|
}
|
|
}
|
|
}
|