Kafka(Go)教程(二)---hello Kafka

深入DW_APB_I2C验证:从FIFO操作到中断处理的全流程调试实战 本文深入探讨了DW_APB_I2C验证的全流程调试实战,重点解析了TX/RX FIFO状态管理和中断处理机制。通过详细的验证环境构建、核心组件分析及典型问题解决方案,为工程师提供了高效的调试方法论和实用技巧,助力提升I2C总线协议验证的效率和可靠性。 阅读详情

来自:指月 https://www.lixueduan.com

原文:https://www.lixueduan.com/post/kafka/02-hello-kafka/

本文记录了 Kafka Golang 客户端(sarama)基本使用。

1. 概述

Kafka 系列相关代码见 Github

Kafka 的 Golang 客户端比较少,不像 Java 由官方维护,Golang 的都是社区在维护。

这里选取的是 sarama,社区活跃度还行,不过封装度比较低,比较接近原生,不过有好处也有坏处吧,如果对 Kafka 比较熟悉使用起来还是不错的。

2. Demo

这是一个简单的 Hello World 示例,主要用于演示如何使用 Kafka 和 测试上文中部署的 kafka 能否正常工作。

和其他 MQ 一样, Kafka 中同样分为 producer 和 consumer。

2.1 producer

package sync

import (
	"log"
	"strconv"
	"time"

	"github.com/Shopify/sarama"
	"kafka-go-example/conf"
)


func Produce(topic string, limit int) {
	config := sarama.NewConfig()
	config.Producer.Return.Successes = true
	config.Producer.Return.Errors = true 
	producer, err := sarama.NewSyncProducer([]string{conf.HOST}, config)
	if err != nil {
		log.Fatal("NewSyncProducer err:", err)
	}
	defer producer.Close()
	for i := 0; i < limit; i++ {
		str := strconv.Itoa(int(time.Now().UnixNano()))
		
		msg := &sarama.ProducerMessage{Topic: topic, Key: nil, Value: sarama.StringEncoder(str)}
		partition, offset, err := producer.SendMessage(msg) 
		if err != nil {
			log.Println("SendMessage err: ", err)
			return
		}
		log.Printf("[Producer] partitionid: %d; offset:%d, value: %s\n", partition, offset, str)
	}
}

2.2 consumer

func Consume(topic string) {
	config := sarama.NewConfig()
	consumer, err := sarama.NewConsumer([]string{conf.HOST}, config)
	if err != nil {
		log.Fatal("NewConsumer err: ", err)
	}
	defer consumer.Close()
	partitionConsumer, err := consumer.ConsumePartition(topic, 0, sarama.OffsetNewest)
	if err != nil {
		log.Fatal("ConsumePartition err: ", err)
	}
	defer partitionConsumer.Close()

	for message := range partitionConsumer.Messages() {
		log.Printf("[Consumer] partitionid: %d; offset:%d, value: %s\n", message.Partition, message.Offset, string(message.Value))
	}
}

2.3 Test

先启动 consumer

lixd@17x:~/17x/projects/kafka-go-example/helloworld/consumer/cmd$ go run main.go 

再启动 producer

lixd@17x:~/17x/projects/kafka-go-example/helloworld/producer/cmd$ go run main.go 
2021/07/31 10:38:32 [Producer] partitionid: 0; offset:7340, value: 1627699112413451557
2021/07/31 10:38:32 [Producer] partitionid: 0; offset:7341, value: 1627699112483251015
2021/07/31 10:38:32 [Producer] partitionid: 0; offset:7342, value: 1627699112518530847
2021/07/31 10:38:32 [Producer] partitionid: 0; offset:7343, value: 1627699112552429595
2021/07/31 10:38:32 [Producer] partitionid: 0; offset:7344, value: 1627699112586320615
2021/07/31 10:38:32 [Producer] partitionid: 0; offset:7345, value: 1627699112621294679
2021/07/31 10:38:32 [Producer] partitionid: 0; offset:7346, value: 1627699112656351458
2021/07/31 10:38:32 [Producer] partitionid: 0; offset:7347, value: 1627699112690306556
2021/07/31 10:38:32 [Producer] partitionid: 0; offset:7348, value: 1627699112724161792

可以看到 生产者启动就开始往 kafka 中发送消息了。

切换回 consumer 看是否能正常消费。

2021/07/31 10:38:32 [Consumer] partitionid: 0; offset:7340, value: 1627699112413451557
2021/07/31 10:38:32 [Consumer] partitionid: 0; offset:7341, value: 1627699112483251015
2021/07/31 10:38:32 [Consumer] partitionid: 0; offset:7342, value: 1627699112518530847
2021/07/31 10:38:32 [Consumer] partitionid: 0; offset:7343, value: 1627699112552429595
2021/07/31 10:38:32 [Consumer] partitionid: 0; offset:7344, value: 1627699112586320615
2021/07/31 10:38:32 [Consumer] partitionid: 0; offset:7345, value: 1627699112621294679
2021/07/31 10:38:32 [Consumer] partitionid: 0; offset:7346, value: 1627699112656351458

ok,一切正常。

3. 小结

本文主要通过一个 HelloWorld Demo 测试了上文部署的 Kafka 能否正常工作。

同时也展示了 Kafka Golang 客户端的基本使用。

文中相关的名词、概念会在后续文章中给出详细解释。

kKfka 系列相关代码见 Github

SPSS回归分析遇到自相关别慌!手把手教你用DW检验和迭代法搞定(附数据实操) 本文详细介绍了在SPSS回归分析中诊断和处理自相关性的完整流程,包括DW检验和迭代法的实操步骤。通过电商销售数据的案例分析,展示了如何识别残差自相关、计算自相关系数ρ,并进行数据变换以优化模型。文章特别强调了结果解读的注意事项和报告撰写要点,帮助研究者避免常见统计陷阱。 阅读详情

相关推荐

Go语言操作Kafka

本文档详细介绍了如何使用Go语言对Kafka进行基础操作。我们将介绍如何使用Go连接Kafka、生产消息、消费消息。

weixin_41974725的博客 789

golang学习之go连接Kafka

window wsl 安装 java zookeeper kafka 及golang 连接kafka

weixin_56349119的博客 7815

深入解析STM32定时器中央对齐模式3的双中断机制

本文深入解析了STM32定时器中央对齐模式3的双中断机制。该模式在一个PWM周期内,会在计数器到达ARR(上溢)和0(下溢)时各触发一次更新中断,实现更精细的实时控制。文章详细阐述了其工作原理、配置方法,并指导如何在中断服务函数中通过DIR位区分中断来源,同时探讨了其在电机控制、数字电源等场景下的应用优势与CPU负载挑战。

weixin_29164185的博客 493

51.Go操作kafka示例(kafka-go库)

之前已经介绍过一个操作kafka的go库了,28.windows安装kafka,Go操作kafka示例(sarama库),但是这个库比较老了,当前比较流行的库是,所以本次我们就使用一下它。我们在GitHub直接输入kafka并带上language标签为Go时,可以可以看到当前库是最流行的。首先启动kafka的服务器,然后在项目中接着我们就可以创建生产者和消费者了,

YouMing_Li的博客 4164

MATLAB实战:手把手教你搭建构网逆变器同步稳定性仿真模型(附避坑指南)

本文详细介绍了如何在MATLAB/Simulink平台上搭建构网逆变器同步稳定性仿真模型,涵盖从基础模块配置到虚拟同步机控制实现的完整流程。针对电力电子工程师常见的控制参数整定困难、仿真结果偏差等问题,提供了LCL滤波器谐振抑制、虚拟惯量优化等关键技术解决方案,并附有避坑指南和工程实践技巧,助力研究者高效完成仿真建模。

weixin_29051193的博客 299

一文入门BMS(电池管理系统)

本文章是基于曾师兄的文稿《具有组网扩展功能的新能源汽车电池管理系统》而写的文章。该文章主要是对BMS(Battery Management System,电池管理系统)做一些简要的介绍,借此助各位也助我入门BMS。有纰漏请指出,转载请说明。学习交流请发邮件 1280253714@qq.com。

weixin_45817947的博客 2万+

kafka-go使用:以及kafka一些基本概念说明

作为开发人员kafka中最常关注的几个概念,是topic,partition和group这几个概念。topic是主题的意思,简单的说topic是数据主题,这样解释好像显得很苍白,只是做了个翻译。一图胜前言,我们还是通过图解来说明。生产者负责写数据,一个topic可以有多个分区。如下图所示,生产者写数据的示意。,即消息在某个分区上是有顺序的,而全局是没有顺序的。这个意味着如果我们需要保证顺序,我们在写消息时需要往同一个分区中写数据。比如,我们有一个场景,有一个订单。

ezreal_pan的博客 1235

ADXL355 STM32 HAL 库 SPI 驱动实战:从零构建高精度加速度数据采集系统

本文详细介绍了如何使用STM32 HAL库通过SPI接口驱动ADXL355高精度加速度计,构建稳定可靠的数据采集系统。从硬件连接到寄存器配置,再到数据采集与处理,提供了完整的实战代码和优化技巧,特别适合工业级振动监测等应用场景。

weixin_28738397的博客 326

Golang操作kafka

kafka cluster: kafka集群,一台或多台服务器组成 Broker: Broker是指部署了Kafka实例的服务器节点。每个服务器上有一个或多个kafka的实 例,我们姑且认为每个broker对应一台服务器。每个kafka集群内的broker都有一个不重复的编号,如图中的broker-0、broker-1等...... Topic:消息的主题,可以理解为消息的分类,kafka的数据就保存在topic。在每个broker上都可以创建多个topic。实际应用中通...

qq_36410466的博客 5168

Unity嵌套ScrollView滑动冲突解决方案:ExecuteEvents.Execute事件透传

在Unity UGUI中,竖向与横向ScrollView嵌套时出现滑动失效,本质是EventSystem事件分发机制的拦截限制。其原理在于PointerDown被外层捕获后,后续PointerMove默认不向下透传;ExecuteEvents.Execute提供了一条绕过常规冒泡流程的官方事件旁路,支持低延迟、方向自适应的精准透传。该技术具备高兼容性与零侵入特性,广泛应用于电商商品页、内容流卡片组、多级导航等需‘列表中嵌套轮播/标签’的真实场景,是解决UGUI嵌套滚动问题的核心工程实践方案。

weixin_33164198的博客 635

XGBoost详解(原理篇)

XGBoost全称为eXtreme Gradient Boosting,即极致梯度提升树。XGBoost是Boosting算法的其中一种,Boosting算法的思想是将许多弱分类器集成在一起,形成一个强分类器(个体学习器间存在强依赖关系,必须串行生成的序列化方法)。Note:关于Boosting算法详见博文集成学习详解_tt丫的博客-优快云博客XGBoost是一种提升树模型,即它将许多树模型集成在一起,形成一个很强的分类器。其中所用到的树模型则是CART回归树模型。

tt丫的博客 7万+

golang使用kafka

kafka 安装及基础概念介绍可以参考:kafka 安装、配置、启动_王安的博客-优快云博客_kafka安装启动 本文主要介绍confluent-kafka-go的使用方法。confluent-kafka-go,简单易用,并且表现稳定,是kafka官网推荐的golang package。https://github.com/confluentinc/confluent-kafka-go 一.下载go client go get -v github.com/confluentinc/con...

王安的博客 6450

Python爬虫实战:百度贴吧帖子与评论抓取全攻略(附舆情分析技巧)

基础配置# 要爬取的贴吧名称(替换成自己需要的,比如“XX手游吧”)TIEBA_NAME = "XX手游"# 分页参数(每页50条帖子,可根据需求调整)PAGE_NUM = 3 # 爬取前3页帖子,共150条# 请求头(从浏览器复制自己的,更真实)Win64;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2391

PX4 飞控 UWB 集成实战:SR150 兼容与 DW3000 开发全解析(含 NuttX 驱动)(下)

本文介绍了在PX4飞控系统中集成NXP SR150和Qorvo DW3000两款UWB芯片的完整开发流程。主要内容包括:DW3000驱动开发部分详细说明了工作模式、频段定义、TDoA锚点信息结构体等关键数据结构的实现,以及16位寄存器地址的SPI通信适配方法。在PX4应用层开发方面,重点阐述了TDoA数据处理流程、uORB主题定义和定位数据发布机制。文章还对比了两款芯片的特性:SR150适合单无人机避障和点对点定位,支持苹果U1互操作;DW3000则更适合多无人机编队和大范围定位。

bother3000的博客 1763

YOLOv11改进策略【损失函数篇】| 将激活函数替换为带有注意力机制的激活函数 ARelu

将ELSA中的函数Φ\PhiΦ用具有可学习参数α\alphaα和β\betaβ的网络层表示为LxiαβCαxixi0σβxixi≥0Lxi​αβCαxi​σβxi​​xi​0xi​≥0​,结合标准的Rectified Linear UnitsRxi0xi0xixi≥0Rxi​0xi​​xi​0xi​≥0​,得到可学习激活函数Fxiα。

Limiiiing的博客 2117

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

DW-RAG实战:企业深水区数据的RAG落地指南

RAG(检索增强生成)是一种将外部知识注入大语言模型的技术范式,其核心原理是通过向量检索从非结构化文档中召回相关片段,再交由LLM生成答案。在企业真实场景中,RAG的技术价值不在于理论准确率,而在于能否稳定处理脏、散、异构的DeepWeb(DW)数据——如扫描合同、带表格PDF、OCR错行文本等。这类数据缺乏统一Schema与元数据,导致标准文本切分、通用embedding和黑盒框架(如LangChain)频繁失效。本文聚焦DW-RAG落地瓶颈,结合wow-rag轻量框架与Jupyter Notebook可

weixin_29052717的博客 191

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

第27天:PHP应用&原生语法&全局变量&数据接受&身份验证&变量覆盖&任意上传

文件common.php,通用模块文件,可能是一个对外部提交的参数做处理的文件,暂时没有问题,可以先查看哪些文件调用了这个文件。时,本意是访问和操控全局变量,但如果代码编写不当,在局部作用域内声明了与全局变量同名的变量,就可能出现覆盖情况。找变量覆盖代码->找此文件调用->选择利用覆盖Session->找开启Session文件覆盖。找文件上传代码->找此文件调用->找函数调用->过滤type用mime绕过。:是一个关联数组,包含当前脚本中的所有session内容。:是一个包含服务器端环境变量的数组。

m0_74110156的博客 514

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Kafka-Go 开源项目使用指南

Kafka-Go 是一个由 Segment.io 开发的 Go 语言编写的 Kafka 客户端库。这个库旨在提供高效、可靠且易于使用的接口来与 Apache Kafka 交互。它支持现代 Kafka 版本的功能,包括高可用性和幂等生产者。 --- ## 1. **项目目录结构及介绍** Kafka-Go 的项目结构简洁明了,主要组件如下: ``` . ├── AUTHORS ├── CHA...

gitblog_00296的博客 528

一文教你Go语言如何轻松使用kafka

本文档详细介绍了如何使用Go语言对Kafka进行基础操作。我们将介绍如何使用Go连接Kafka、生产消息、消费消息。

weixin_59801183的博客 2612

Kafka-go各部分详细分析、案例

Produce其中又调用了ProduceMessage方法,方法具体内容如下,就是将通过producer将要发送的消息序列化后发送出去。kafka消费消息的代码之前在initMQ的时候就已经开启一个goroutine开始消费,只要有消息对应上topic就可以消费。,其中writer肯定需要绑定Topic,而reader肯定需要Topic和GroupId,去消费这些消息。Topic、GroupId都很简单,赋一个string的字符串就好了,kafka.Writer,consumer实际上就是。

YiGeiGiaoGiao的博客 1491

golang分布式中间件之kafka

在本文中,我们介绍了Kafka的核心概念和特点,并使用Go语言实现了Kafka分布式中间件的生产者、消费者和Consumer Group。Partition是Kafka的另一个重要概念,它是Topic的子集。每个Partition都是一个有序的、不可变的消息序列,其中的每个消息都能够持久化存储。它可以将消息发送到一个指定的Topic和Partition中,同时也可以选择使用一个指定的Key来对消息进行分区。Kafka的可伸缩性非常强,可以通过增加节点来扩展集群规模,以达到更高的吞吐量和更高的并发性能。

SMILY12138的博客 1609

Go操作Kafka之kafka-go

Kafka是一种高吞吐量的分布式发布订阅消息系统,本文介绍了如何使用kafka-go这个库实现Go语言与kafka的交互。Go社区中目前有三个比较常用的kafka客户端库 , 它们各有特点。首先是IBM/sarama(这个库已经由Shopify转给了IBM),之前我写过一篇使用sarama操作Kafka的教程,相较于sarama, kafka-go 更简单、更易用。segmentio/kafka-go 是纯Go实现,提供了与kafka交互的低级别和高级别两套API,同时也支持Context。

宋发元 7184

【Kafka-go】golang的kafka应用

网络上关于go的Kafka还是比较少的今天就先出一篇入门级别的,之后再看看能能出一个公司业务场景中的消息流。

xiao_xiao_w的博客 1204

go操作kafka

1、下载包sarama Go语言中连接kafka使用第三方库:github.com/Shopify/sarama。 go get github.com/Shopify/sarama@v1.19 1.2 注意事项 sarama v1.20之后的版本加入了zstd压缩算法,需要用到cgo,在Windows平台编译时会提示类似如下错误: # github.com/DataDog/zstd exec: &quot;gcc&quot;:executable file not found in %PA

weixin_42282999的博客 1501

如何快速上手kafka-go:Go语言Kafka客户端的终极指南

kafka-go是一个专为Go语言开发者打造的高性能Kafka客户端库,它提供了简洁的API和高效的消息处理能力,让Go应用与Kafka集群的集成变得简单而强大。无论是构建实时数据管道还是开发高吞吐量的消息系统,kafka-go都能满足你的需求。 ## 为什么选择kafka-go? kafka-go作为Go生态中领先的Kafka客户端,具有以下核心优势: - **轻量级设计**:相比其他客户

gitblog_00051的博客 792

142. Go操作Kafka(confluent-kafka-go库)

是一个开源分布式事件流平台,用于高性能数据管道、流式分析、数据集成和关键任务应用程序。它提供了诸如流数据管道、实时分析、数据集成、事件源和日志聚合等多种能力。Kafka的用例和能力流数据管道:Kafka提供了一个分布式发布-订阅消息系统,可以在系统或应用程序之间流式传输数据。它提供了具有数据复制和容错能力的强大队列。Kafka允许使用工具如和KSQL处理实时数据流,用于构建流式分析和数据处理应用程序。Kafka可以用来通过在不同数据源和格式之间流式传输数据来集成不同的系统。这使它对流式ETL非常有用。

YouMing_Li的博客 3492
上一篇: Kafka(Go)教程(一)---通过docker-compose 安装 Kafka
下一篇: Kafka(Go)教程(三)---Kafka 相关概念介绍
探索云原生
博客等级 码龄9年 730粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值