kafka入门笔记与golang客户端

kafka入门笔记与golang客户端(2021年/10月)kafka是一个分布式流处理平台,常常以消息中间件的角色各大平台。与之类似的产品有,Apache ActiveMQ、RabbitMQ、RocketMQ等。而kafka常常被用在大数据相关的一些领域。关于更详细的介绍可以参考中文官网kafka的一些特色同一个partition中的消息消费是有序的尽管现在kafka官方宣布将来的版本不会依赖zookeeper做注册中心,但是在当前最新的2.8版本中,官方教程还是使用的zookeeper,也许在
摘要由CSDN通过智能技术生成

kafka入门笔记与golang客户端(2021年/10月)

kafka是一个分布式流处理平台,常常以消息中间件的角色各大平台。与之类似的产品有,Apache ActiveMQ、RabbitMQ、RocketMQ等。而kafka常常被用在大数据相关的一些领域。关于更详细的介绍可以参考中文官网

kafka的一些特色

  • 同一个partition中的消息消费是有序的
  • 尽管现在kafka官方宣布将来的版本不会依赖zookeeper做注册中心,但是在当前最新的2.8版本中,官方教程还是使用的zookeeper,也许在未来不久可能不需要了。
  • 在中文官方文档中,指定了kafka还具有轻量级流处理功能,但是kafka-streaming 其实不是kafka官方的标准能力,只是一种思想,各个语言可以自身实现她。

安装kafka

  • 准备好一台Linux虚拟机
  • 安装好Java的jdk环境
  • 配置全局环境变量
    • 解压:tar -zxvf jdk-8u181-linux-x64.tar.gz
    • 重命名 为 jdk1.8
    • vim /etc/profile
    • 配置
JAVA_HOME=/usr/local/software/jdk1.8
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
- 环境变量立刻生效 source /etc/profile
- 查看安装情况 java -version
  • 安装zookeeper
    • 默认配置文件 zoo.cfg
    • 启动zk
    • bin/zkServer.sh start
  • 安装kafka,注意kafka需要下载的是 -bin 结尾的二进制包
    • config目录下 server.properties
    • #标识broker编号,集群中有多个broker,则每个broker的编号需要设置不同 broker.id=0
    • 修改下面两个配置 ( listeners 配置的ip和advertised.listeners相同时启动kafka会报错)
      • listeners(内网Ip)
      • advertised.listeners(公网ip)

修改zk地址,默认地址
zookeeper.connection=localhost:2181
bin目录启动
#启动
./kafka-server-start.sh  ../config/server.properties &
#后台启动
./kafka-server-start.sh -daemon ../config/server.properties &
创建topic
./kafka-topics.sh --create --zookeeper ip:2181 --replication-factor 1 --partitions 1 --topic you-test-topic
查看topic
./kafka-topics.sh --list --zookeeper ip:2181
删除topic
./kafka-topics.sh --zookeeper ip:2181 --delete --topic t1
发送消息(默认topic不存在会创建)
# 发送消息 这里的ip和端口必须和配置文件中的一样,不能用localhost
./kafka-console-producer.sh --broker-list ip:9092  --topic you-test-topic
消费消息
# 消费消息 ip和端口和配置文件中保持一样
./kafka-console-consumer.sh --bootstrap-server 10.248.174.155:9092 --from-beginning --topic you-test-topic

golang接入kafka

go语言可操作kafka的客户端有很多官网也有说明
这里选择,go语言使用最广泛的sarama框架进行示例

生产者

  • producer 分为两种,同步发送,与异步发送。
  • producer 支持单个消息发送,也支持批量消息发送,批量发送时支持往不同的topic发送。异步发送暂时还未封装到api
// 异步消息
func TestAsyncProducer(t *testing.T) {
   
	config := sarama.NewConfig()
	config.Producer.Return.Successes = true
	producer, err := sarama.NewAsyncProducer([]string{
   "ip:port"}, config)
	if err != nil {
   
		panic(err)
	}

	// Trap SIGINT to trigger a graceful shutdown.
	signals := make(chan os.Signal, 1)
	signal
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值