module declares its path as: github.com/IBM/sarama but was required as: gith

简介: module declares its path as: github.com/IBM/sarama but was required as: gith

看来在您当前的项目中已经存在一个模块,声明其路径为 github.com/IBM/sarama,但我们需要使用的是 github.com/Shopify/sarama。这可能会导致依赖冲突。要解决这个问题,您可以采取以下步骤:

移除或更新现有的 go.mod 文件: 确保您的项目使用的是正确的 sarama 库。

更新 go.mod 文件: 确保您的 go.mod 文件引用的是 github.com/Shopify/sarama。您可以手动编辑 go.mod 文件,或者使用 go get 命令。

首先,删除现有的 go.mod 和 go.sum 文件:

rm go.mod go.sum


然后,重新初始化 Go 模块并获取正确的 sarama 库:

go mod init your_module_name
go get github.com/Shopify/sarama


以下是一个完整的示例,包括 go.mod 文件和 main.go 文件。

1. 创建 go.mod 文件
go mod init your_module_name


然后在 go.mod 文件中确保引用 github.com/Shopify/sarama:

module your_module_name
go 1.18
require github.com/Shopify/sarama v1.34.1


2. 创建 main.go 文件

package main

import (
  "context"
  "fmt"
  "log"
  "os"
  "os/signal"

  "github.com/Shopify/sarama"
)

func main() {
  // Kafka broker addresses
  brokers := []string{"localhost:9092"}
  // Kafka topic
  topic := "your_topic"
  // Consumer group ID
  group := "your_group"

  // Sarama logger configuration
  sarama.Logger = log.New(os.Stdout, "[sarama] ", log.LstdFlags)

  // Sarama configuration
  config := sarama.NewConfig()
  config.Version = sarama.V0_9_0_0 // Kafka version
  config.Consumer.Group.Rebalance.Strategy = sarama.BalanceStrategyRoundRobin
  config.Consumer.Offsets.Initial = sarama.OffsetOldest

  // Create new consumer group
  consumerGroup, err := sarama.NewConsumerGroup(brokers, group, config)
  if err != nil {
    log.Fatalf("Error creating consumer group: %v", err)
  }
  defer func() {
    if err := consumerGroup.Close(); err != nil {
      log.Fatalf("Error closing consumer group: %v", err)
    }
  }()

  // Create a new consumer instance
  consumer := Consumer{
    ready: make(chan bool),
  }

  // Handle termination signals
  ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)
  defer cancel()

  // Run the consumer group in a separate goroutine
  go func() {
    for {
      if err := consumerGroup.Consume(ctx, []string{topic}, &consumer); err != nil {
        log.Fatalf("Error consuming messages: %v", err)
      }
      // Check if context was canceled, signaling termination
      if ctx.Err() != nil {
        return
      }
      consumer.ready = make(chan bool)
    }
  }()

  // Wait for consumer to be ready
  <-consumer.ready
  log.Println("Sarama consumer up and running! Press Ctrl+C to stop.")

  // Wait for termination signal
  <-ctx.Done()
  log.Println("Terminating Sarama consumer...")
}

// Consumer represents a Sarama consumer group consumer
type Consumer struct {
  ready chan bool
}

// Setup is run at the beginning of a new session, before ConsumeClaim
func (consumer *Consumer) Setup(sarama.ConsumerGroupSession) error {
  // Mark the consumer as ready
  close(consumer.ready)
  return nil
}

// Cleanup is run at the end of a session, once all ConsumeClaim goroutines have exited
func (consumer *Consumer) Cleanup(sarama.ConsumerGroupSession) error {
  return nil
}

// ConsumeClaim must start a consumer loop of ConsumerGroupClaim's Messages().
func (consumer *Consumer) ConsumeClaim(session sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error {
  for message := range claim.Messages() {
    log.Printf("Message claimed: value = %s, timestamp = %v, topic = %s", string(message.Value), message.Timestamp, message.Topic)
    session.MarkMessage(message, "")
  }
  return nil
}

运行代码

确保 Kafka 服务器已启动,并且指定的主题存在,然后运行以上 Go 程序来消费 Kafka 消息。

go run main.go


这段代码将在控制台中打印消费到的 Kafka 消息的值、时间戳和主题信息。这样就可以避免模块路径冲突,并确保使用正确的 sarama 库。

相关文章
|
2月前
|
消息中间件 Kafka Go
使用github.com/IBM/sarama 编写消费kafka的功能
使用github.com/IBM/sarama 编写消费kafka的功能
no required module provides package github.com/gorilla/mux
no required module provides package github.com/gorilla/mux
214 0
|
人工智能 负载均衡 数据中心
GitHub 开源负载均衡组件 GLB Director;IBM 利用 AI 开发黑客程序,可攻破最高级别防御措施
1、GitHub 开源负载均衡组件 GLB Director GitHub 发布了开源负载均衡组件 GitHub Load Balancer Director(GLB) Director,GLB 是 GitHub 针对裸机数据中心的可扩展负载均衡解决方案,它支持大多数 GitHub 的对外服务,并且还为诸如高可用 MySQL 集群这样最为关键的内部系统提供负载均衡服务。
2454 0
|
3月前
|
开发工具 git 开发者
2024最简七步完成 将本地项目提交到github仓库方法
该文章提供了一个简洁的七步教程,指导用户如何将本地项目提交到GitHub仓库。
2024最简七步完成 将本地项目提交到github仓库方法
|
1月前
|
编解码 Oracle Java
java9到java17的新特性学习--github新项目
本文宣布了一个名为"JavaLearnNote"的新GitHub项目,该项目旨在帮助Java开发者深入理解和掌握从Java 9到Java 17的每个版本的关键新特性,并通过实战演示、社区支持和持续更新来促进学习。
70 3
|
3月前
|
Rust 前端开发 JavaScript
Github 2024-05-20 开源项目周报 Top15
根据Github Trendings的统计,2024年5月20日当周共有15个项目上榜。按开发语言分类,项目数量如下:Python项目5个,TypeScript项目3个,C++项目2个,Jupyter Notebook项目2个,C、Go、Rust和C#项目各1个。介绍了多个值得关注的项目,包括ChatGPT桌面应用程序、Fooocus图像生成软件、Jellyfin媒体系统等。这些项目涵盖了多种功能和技术领域,值得关注和研究。
56 3
|
3月前
|
SQL JavaScript 前端开发
Github 2024-08-05 开源项目周报 Top15
根据 Github Trendings 的统计,本周(2024年8月5日统计)共有15个项目上榜。以下是根据开发语言汇总的项目数量: - Go 项目:4个 - JavaScript 项目:3个 - Python 项目:3个 - Java 项目:2个 - TypeScript 项目:2个 - C 项目:1个 - Shell 项目:1个 - Dockerfile 项目:1个 - 非开发语言项目:1个
93 2
|
3月前
|
人工智能 Rust JavaScript
Github 2024-08-26 开源项目周报Top15
根据Github Trendings的统计,本周共有15个项目上榜。以下是按开发语言汇总的项目数量:Python项目8个,TypeScript、C++ 和 Rust 项目各2个,Jupyter Notebook、Shell、Swift 和 Dart 项目各1个。其中,RustDesk 是一款用 Rust 编写的开源远程桌面软件,可作为 TeamViewer 的替代品;Whisper 是一个通用的语音识别模型,基于大规模音频数据集训练而成;初学者的生成式人工智能(第2版)则是由微软提供的18门课程,教授构建生成式AI应用所需的知识。
123 1
|
3月前
|
Rust Dart 前端开发
Github 2024-08-19 开源项目周报Top15
根据Github Trendings的统计,本周(2024年8月19日统计)共有15个项目上榜。按开发语言分类,上榜项目数量如下:Python项目最多,有7项;其次是JavaScript和TypeScript,各有3项;Dart有2项;HTML、PowerShell、Clojure和C++各1项。此外,还介绍了多个热门项目,包括Bootstrap 5、RustDesk、ComfyUI、易采集、Penpot等,涵盖了Web开发、远程桌面、自动化测试、设计工具等多个领域。
107 1
|
3月前
|
JavaScript 前端开发 Go
Github 2024-08-12 开源项目周报 Top14
本周Github Trendings共有14个项目上榜,按开发语言汇总如下:Python项目7个,TypeScript项目5个,C项目2个,JavaScript项目2个,Go和Batchfile项目各1个。其中亮点包括开发者职业成长指南、Windows激活工具、ComfyUI图形界面、AFFiNE知识库、易采集可视化爬虫等项目,涵盖多种实用工具和开源平台。
112 1
下一篇
无影云桌面