作为标准代码,我用来发布消息以进行测试:
func main() {
opts := MQTT.NewClientOptions().AddBroker("tcp://127.0.0.1:1883")
opts.SetClientID("myclientid_")
opts.SetDefaultPublishHandler(f)
opts.SetConnectionLostHandler(connLostHandler)
opts.OnConnect = func(c MQTT.Client) {
fmt.Printf("Client connected, subscribing to: test/topic\n")
if token := c.Subscribe("logs", 0, nil); token.Wait() && token.Error() != nil {
fmt.Println(token.Error())
os.Exit(1)
}
}
c := MQTT.NewClient(opts)
if token := c.Connect(); token.Wait() && token.Error() != nil {
panic(token.Error())
}
for i := 0; i < 5; i++ {
text := fmt.Sprintf("this is msg #%d!", i)
token := c.Publish("logs", 0, false, text)
token.Wait()
}
time.Sleep(3 * time.Second)
if token := c.Unsubscribe("logs"); token.Wait() && token.Error() != nil {
fmt.Println(token.Error())
os.Exit(1)
}
c.Disconnect(250)
}
这个效果很好!但是在执行高延迟任务时大量传递消息,我的程序性能会很低,所以我必须使用 goroutine 和 Channel。
这段代码正是我想要的!
但作为 Golang 中的菜鸟,我不知道如何START()
在主函数中运行函数以及要传递什么参数!
特别是,我将如何使用通道将消息传递给工作人员(发布者)?!
我们将不胜感激您的帮助!
慕斯王
慕姐8265434
相关分类