注意,当前使用的不是grpc协议
生产者
package main
import (
"context"
"fmt"
"github.com/apache/rocketmq-client-go/v2"
"github.com/apache/rocketmq-client-go/v2/primitive"
"github.com/apache/rocketmq-client-go/v2/producer"
"time"
)
func main() {
// 消息消费失败重试两次
newProducer, err := rocketmq.NewProducer(producer.WithNameServer([]string{"192.168.252.128:9876"}), producer.WithRetry(2))
defer func(newProducer rocketmq.Producer) {
err := newProducer.Shutdown()
if err != nil {
panic("关闭producer失败")
}
}(newProducer)
if err != nil {
panic("生成producer失败")
}
if err = newProducer.Start(); err != nil {
panic("启动producer失败")
}
res, err := newProducer.SendSync(context.Background(), primitive.NewMessage("SimpleTopic", []byte("一条简单消息")))
if err != nil {
panic("消息发送失败" + err.Error())
}
nowStr := time.Now().Format("2006-01-02 15:04:05")
fmt.Printf("%s: 消息: %s发送成功 \n", nowStr, res.String())
}
消费者
package main
import (
"context"
"fmt"
"github.com/apache/rocketmq-client-go/v2"
"github.com/apache/rocketmq-client-go/v2/consumer"
"github.com/apache/rocketmq-client-go/v2/primitive"
"time"
)
func main() {
newPushConsumer, err := rocketmq.NewPushConsumer(consumer.WithNameServer([]string{"192.168.252.128:9876"}), consumer.WithGroupName("test"))
defer func(newPushConsumer rocketmq.PushConsumer) {
err := newPushConsumer.Shutdown()
if err != nil {
panic("关闭consumer失败")
}
}(newPushConsumer)
err = newPushConsumer.Subscribe("SimpleTopic", consumer.MessageSelector{}, func(ctx context.Context, msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) {
for _, msg := range msgs {
nowStr := time.Now().Format("2006-01-02 15:04:05")
fmt.Printf("%s 读取到一条消息,消息内容: %s \n", nowStr, string(msg.Body))
}
return consumer.ConsumeSuccess, nil
})
if err != nil {
fmt.Println("读取消息失败")
}
if err = newPushConsumer.Start(); err != nil {
panic("启动consumer失败")
}
// 不能让主goroutine退出
time.Sleep(time.Hour)
}