要使用Golang订阅RocketMQ主题(Topic),你可以使用Apache RocketMQ的Go客户端库。以下是一个基本示例代码,演示如何使用Golang订阅RocketMQ主题:
package main
import (
"fmt"
"github.com/apache/rocketmq-client-go/v2"
"github.com/apache/rocketmq-client-go/v2/consumer"
)
func main() {
c, err := rocketmq.NewPushConsumer(
consumer.WithNameServer([]string{"localhost:9876"}),
)
if err != nil {
fmt.Println("Failed to create consumer: ", err.Error())
return
}
err = c.Subscribe("YourTopic", consumer.MessageSelector{}, func(ctx context.Context,
msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) {
// 在这里处理接收到的消息
for _, msg := range msgs {
fmt.Println("Received message:", string(msg.Body))
}
return consumer.ConsumeSuccess, nil
})
if err != nil {
fmt.Println("Failed to subscribe to topic: ", err.Error())
return
}
// 启动消费者,并持续接收消息
err = c.Start()
if err != nil {
fmt.Println("Failed to start consumer: ", err.Error())
return
}
// 持续运行,直到接收到停止信号(例如:按下Ctrl+C)
select {}
}
请注意,上述代码中的YourTopic
应替换为实际要订阅的RocketMQ主题名称。还需要确保在您的环境中安装了相应的依赖项。
这只是一个基本示例,您可能需要根据自己的需求进行更多的定制和错误处理。有关更多详细信息,请参考RocketMQ Go客户端库的文档。
内容由零声教学AI助手提供,问题来源于学员提问