Skip to main content
版本:Next

Golang SDK

与 C++/Python SDK 类似,Golang SDK 也分为 ProducerConsumer 两部分,下面对其进行介绍。

Producer

首先 import 必要的 package

import (
"github.com/apache/inlong/inlong-tubemq/tubemq-client-twins/tubemq-client-go/client"
"github.com/apache/inlong/inlong-tubemq/tubemq-client-twins/tubemq-client-go/config"
"github.com/apache/inlong/inlong-tubemq/tubemq-client-twins/tubemq-client-go/log"
"github.com/apache/inlong/inlong-tubemq/tubemq-client-twins/tubemq-client-go/util"
)

之后设置 Producer 的配置,下面例子中访问本地 Master,订阅 topic 为 demo_0

cfg, err := config.ParseAddress("127.0.0.1:8715?topic=demo_0")

如果有多个 topic 需要进行访问,也可以直接对 config 的 topic 进行修改

cfg.Producer.Topics = []string{"demo", "demo_0", "demo_1"}

配置完成后,新建 Producer 的实例,在这个过程中,SDK 会向 TubeMQ Master 申请注册,并发送心跳拿到 topic 的元数据

p, err := client.NewProducer(cfg)

之后构造消息并发送即可

demoData := "hello_tubemq"
msg := client.Message{
Topic: cfg.Producer.Topics[topicIndex], // 可以从订阅的 topic 列表中选择
Data: []byte(demoData),
DataLen: int32(len(demoData)),
}

success, errCode, errMsg := p.SendMessage(&msg) // 向 tubemq 发送 message,返回是否成功,错误码以及错误信息

Consumer

ConsumerProducer 的大致相同,除了在设置 config 时,有消费 group 的概念

cfg, err := config.ParseAddress("127.0.0.1:8715?topic=demo_0&group=test_group")

之后参考 Producer 的用法进行消费即可

c, err := client.NewConsumer(cfg) // 新建 Consumer 实例
cr, err := c.GetMessage() // 获取消息
_, err = c.Confirm(cr.ConfirmContext, true) // 获取后向 tubemq 进行 confirm

Example

上述文档内容为示例,省去了一些细节,完整可以运行的例子请参考 Golang SDK Example