go kafka group

本文介绍如何在Go中使用sarama-cluster库处理Kafka的Group消费问题。由于sarama自身不支持Group概念,因此需要借助sarama-cluster。在实际使用中要注意sarama版本兼容性,避免出现非正向间隔错误。文中提供了测试代码示例及运行结果,并推荐了sarama-cluster的相关资源。
摘要由CSDN通过智能技术生成

在以前的文章kafka初探go和C#的实现里面我们用了sarama来消费kafka的消息,但是很遗憾它没有group的概念。没办法 我们只能用sarama-cluster来实现, 注意sarama版本不要太新否则有错误panic: non-positive interval for NewTicker 问题处理,建议大家可以修改go.mod文件如下:

require (
	github.com/Shopify/sarama v1.24.1
	github.com/bsm/sarama-cluster v2.1.15+incompatible
)

测试代码如下:

papackage main

import (
	"context"
	"fmt"
	"log"
	"os"
	"os/signal"
	_ "regexp"
	"time"

	"github.com/Shopify/sarama"
	cluster "github.com/bsm/sarama-cluster"
)

var Address = []string{"192.168.100.30:9092"}
var Topic = "gavintest"

//panic: non-positive interval for NewTicker
// 修改go.mod
//github.com/Shopify/sarama v1.24.1
// github.com/bsm/sarama-cluster v2.1.15+incompatible
//修改
/**
  消费者
*/
func main() {
	go syncConsumer(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要安装kafka-go库,可以通过以下命令安装: ``` go get github.com/segmentio/kafka-go ``` 接着,可以使用以下代码消费kafka消息: ```go package main import ( "context" "fmt" "log" "time" "github.com/segmentio/kafka-go" ) func main() { // 设置kafka地址 brokers := []string{"127.0.0.1:9092"} // 创建kafka reader reader := kafka.NewReader(kafka.ReaderConfig{ Brokers: brokers, GroupID: "group1", Topic: "test", MinBytes: 10e3, // 最小读取字节数 MaxBytes: 10e6, // 最大读取字节数 }) // 循环消费消息 for { // 读取消息 msg, err := reader.FetchMessage(context.Background()) if err != nil { log.Printf("fetch message error: %v", err) break } fmt.Printf("message received: %s\n", string(msg.Value)) // 等待一段时间后再消费下一条消息 time.Sleep(1 * time.Second) // 标记消息已经被消费 err = reader.CommitMessages(context.Background(), msg) if err != nil { log.Printf("commit message error: %v", err) break } } // 关闭reader连接 err := reader.Close() if err != nil { log.Printf("close reader error: %v", err) } } ``` 以上代码中,首先创建了一个kafka reader对象,然后循环读取消息。在读取消息后,需要调用`CommitMessages`方法将消息标记为已消费,否则下次读取消息时会再次读取到该消息。最后,需要调用`Close`方法关闭reader连接。 需要注意的是,如果使用的是kafka的SSL连接,需要在`kafka.ReaderConfig`中设置`TLS`字段,具体可以参考[kafka-go文档](https://pkg.go.dev/github.com/segmentio/kafka-go?tab=doc#TLS)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值