【GoCN酷Go推荐】Shopify 出品的完整度最完善的 Kafka 客户端_sarama

Sarama是Go语言中一个全面且兼容性良好的Apache Kafka客户端,支持从1.15到1.16的Go版本及Kafka 2.6到2.8。它无需CGO支持,提供清晰的文档和示例。使用Sarama,你可以方便地创建发布者和消费者,进行消息的生产和消费。项目官方仓库提供了详细的参考资料和示例。
摘要由CSDN通过智能技术生成

1. sarama 是什么?

sarama 的出现意味着,golang 有完整的 apache kafka 客户端文档的全部用例了

2. 为什么那么受欢迎?

  • 他完整,兼容性好

  • 不需要 CGO 的支持

  • 支持的 golang 版本从 1.15 到目前最新的 1.16

  • 支持的 kafka 版本横跨 2.6 到 2.8,并且之前发布的老版本依然支持

3. 怎么使用

下载扩展库 go get github.com/Shopify/sarama 即可。

  1. 安装完首先在 test 中写一个队列任务发布者:kafka 的集群,自己用 docker 在 wsl 下搭建就行了,网上例子非常多,这里就不详细解答了

请看我代码逐行解释:

package tester

import (
    "fmt"
    "github.com/Shopify/sarama"
    "log"
    "os"
    "testing"
    "time"
)

//集群地址
var address = []string{"192.168.83.89:19092","192.168.83.89:29092","192.168.83.89:39092"}

//创建kafka任务发布者
func TestKafkaProducter(t *testing.T) {
    //配置发布者
    config := sarama.NewConfig()
    //确认返回,记得一定要写,因为本次例子我用的是同步发布者
    config.Producer.Return.Successes = true
    //设置超时时间 这个超时时间一旦过期,新的订阅者在这个超时时间后才创建的,就不能订阅到消息了
    config.Producer.Timeout = 5 * time.Second
    //连接发布者,并创建发布者实例
    p, err := sarama.NewSyncProducer(address, config)
    if err != nil {
        log.Printf("sarama.NewSyncProducer err, message=%s \n", err)
        return
    }
    //程序退出时释放资源
    defer p.Close()
    //设置一个逻辑上的分区名,叫安彦飞
    topic := "anyanfei"
    //这个是发布的内容
    srcValue := "sync: this is a message. index=%d"
    //发布者循环发送0-9的消息内容
    for i:=0; i<10; i++ {
        value := fmt.Sprintf(srcValue, i)
        //创建发布者消息体
        msg := &sarama.ProducerMessage{
            Topic:topic,
            Value:sarama.ByteEncoder(value),
        }
        //发送消息并返回消息所在的物理分区和偏移量
        partition, offset, err := p.SendMessage(msg)
        if err != nil {
            log.Printf("send message(%s) err=%s \n", value, err)
        }else {
            fmt.Fprintf(os.Stdout, value + "发送成功,partition=%d, offset=%d \n", partition, offset)
        }
        time.Sleep(500*time.Millisecond)
    }
}
  1. 我们开始来创建订阅者,俗称消费者:同样是在 tester 包下进行编写,测试用嘛(一定要注意,实际项目中不能用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cloudreve客户端是指用于访问和管理Cloudreve网盘系统的应用程序。Cloudreve提供了多种客户端,包括Web客户端和移动客户端。Web客户端是通过浏览器访问Cloudreve网页来进行文件上传、下载、分享和管理的。移动客户端是指适用于手机和平板电脑的应用程序,可以在移动设备上方便地访问和管理Cloudreve网盘系统的文件。通过Cloudreve客户端,用户可以方便地进行文件的同步、备份和共享,提高工作和生活的效率。\[2\]如果你想在Linux系统上部署Cloudreve客户端,可以按照引用\[1\]中的命令行操作进行安装和启动。如果你想使用Docker一键部署Cloudreve客户端,可以参考引用\[3\]中的命令进行操作。无论是哪种方式,Cloudreve客户端都可以帮助你轻松地管理和访问你的Cloudreve网盘系统。 #### 引用[.reference_title] - *1* [安装Cloudreve 新版V3(go版本)](https://blog.csdn.net/qq_39010320/article/details/119923529)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [「GoCNGo推荐」Cloudreve 公私兼备的网盘系统](https://blog.csdn.net/RA681t58CJxsgCkJ31/article/details/122183231)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值