脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - golang操作rocketmq的示例代码

golang操作rocketmq的示例代码

2022-09-13 11:00专职 Golang

这篇文章主要介绍了golang操作rocketmq的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

RocketMQ 是什么

Github 上关于 RocketMQ 的介绍:
RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。具有以下特性:

  • 支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型
  • 在一个队列中可靠的先进先出(FIFO)和严格的顺序传递
  • 支持拉(pull)和推(push)两种消息模式
  • 单一队列百万消息的堆积能力
  • 支持多种消息协议,如 JMS、MQTT 等
  • 分布式高可用的部署架构,满足至少一次消息传递语义
  • 提供 docker 镜像用于隔离测试和云集群部署
  • 提供配置、指标和监控等功能丰富的 Dashboard

对于这些特性描述,大家简单过一眼就即可,深入学习之后自然就明白了。

下面看下golang操作rocketmq的示例代码,内容如下所示:

下载

?
1
go get github.com/apache/rocketmq-client-go/v2

代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
func main() {
    // 1. 创建主题
    //CreateTopic("test-04", 10909)
    // 2. 生产者向主题中发送消息
    //SendSyncMessage("hello world0002")
    // 3. 消费者订阅主题并消费
    SubscribeMessage()
}
func CreateTopic(topicName string, port int) {
    // 创建主题
    testAdmin, err := admin.NewAdmin(admin.WithResolver(primitive.NewPassthroughResolver([]string{"ip:server_port"})))
    if err != nil {
        fmt.Println(err)
    }
    err = testAdmin.CreateTopic(
        context.Background(),
        admin.WithTopicCreate(topicName),
        admin.WithBrokerAddrCreate(fmt.Sprintf("ip:%d", port)),
    )
    fmt.Println(err)
func SendSyncMessage(message string) {
    endPoint := []string{"ip:server_port"}
    p, err := rocketmq.NewProducer(
        producer.WithNameServer(endPoint),
        //producer.WithNsResolver(primitive.NewPassthroughResolver(endPoint)),
        producer.WithRetry(2),
    err = p.Start()
    result, err := p.SendSync(context.Background(), &primitive.Message{
        Topic: "test",
        Body:  []byte(message),
    })
    fmt.Println(result.Status, result)
func SubscribeMessage() {
    // 订阅主题、并消费
    c, err := rocketmq.NewPushConsumer(
        consumer.WithNameServer(endPoint),
        consumer.WithConsumerModel(consumer.Clustering),
        consumer.WithGroupName("GID_TEST01"),
        //fmt.Println(err)
    err = c.Subscribe("test", consumer.MessageSelector{}, func(ctx context.Context,
        msgs ...*primitive.MessageExt) (consumer.ConsumeResult, error) {
        for i := range msgs {
            fmt.Printf("subscribe callback: %v \n", msgs[i])
        }
        return consumer.ConsumeSuccess, nil
        //fmt.Println(err.Error())
    // Note: start after subscribe
    err = c.Start()
        os.Exit(-1)
    c.Shutdown()

到此这篇关于golang操作rocketmq的示例代码的文章就介绍到这了,更多相关golang操作rocketmq内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/mayanan/p/16106021.html

延伸 · 阅读

精彩推荐
  • Golang浅谈Go语言中的次方用法

    浅谈Go语言中的次方用法

    这篇文章主要介绍了浅谈Go语言中的次方用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    zjd-fighting15152021-03-03
  • GolangGo 插件系统,一个凉了快半截的特性?

    Go 插件系统,一个凉了快半截的特性?

    目前在 Go 工程中普遍还没广泛的使用起来,覆盖率不高。在 Go issues 上吐槽挺多,甚至感觉有点像凉了半截的样子。...

    脑子进煎鱼了11522021-08-17
  • GolangGolang中的Slice与数组及区别详解

    Golang中的Slice与数组及区别详解

    数组是一种具有固定长度的基本数据结构,在golang中与C语言一样数组一旦创建了它的长度就不允许改变,数组的空余位置用0填补,不允许数组越界。今天小编...

    alienwu4792020-06-06
  • Golang在Go中复制文件最流行的3种方法

    在Go中复制文件最流行的3种方法

    今天小编就为大家分享一篇关于在Go中复制文件最流行的3种方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小...

    Mihalis Tsoukalos8822020-05-20
  • GolangGolang中Set类型的实现方法示例详解

    Golang中Set类型的实现方法示例详解

    这篇文章主要给大家介绍了关于Golang中Set类型实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    脚本之家7242020-05-09
  • Golanggolang游戏等资源压缩包创建和操作方法

    golang游戏等资源压缩包创建和操作方法

    这篇文章主要介绍了golang游戏等资源压缩包创建和操作,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    csdn9303312012022-08-16
  • Golanggolang 在windows中设置环境变量的操作

    golang 在windows中设置环境变量的操作

    这篇文章主要介绍了golang 在windows中设置环境变量的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    soulbboy11682021-06-08
  • Golang聊聊Golang中很好用的viper配置模块

    聊聊Golang中很好用的viper配置模块

    这篇文章主要介绍了Golang中很好用的viper配置模块用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    龙舞飞扬v9562021-03-04