Kafka

本文详细介绍了如何在Windows上安装Kafka,包括启动Zookeeper和Kafka服务,创建主题,以及建立生产者和消费者。接着展示了使用Python的kafka-python库进行消息发送和接收。最后,文章演示了Kafka与MySQL的结合使用,通过Python将Kafka消息写入MySQL数据库。
摘要由CSDN通过智能技术生成

目录

安装kafka

主题操作

创建生产者

创建消费者

用python操作kafka

Kafka与mysql组合使用


安装kafka

1.安装kafka:kafka_2.12-2.4.0.tgz到C盘根目录下,并解压,重命名文件为kafka

2.启动Zookeeper服务:打开cmd命令窗口,用cd c:/kafka命令切换到kafka文件路径下,输入:bin\windows\zookeeper-server-start.bat  config\zookeeper.Properties

3.启动kafka:在此打开一个cmd命令窗口,切换路径,输入:bin\windows\kafka-server-start.bat  config\server.properties

主题操作

1.创建一个主题(Topic),名称为“topic_test”,包含一个分区,只有一个副本

打开命令行,切换路线,输入:bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topic_test,会有警告,但是仍然会创建

2. 显示主题

打开命令行,切换路线,输入:bin\windows\kafka-topics.bat  --list  --zookeeper  localhost:2181

创建生产者

打开一个cmd窗口,切换路线,输入:.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic topic_test,出现小尖角表示创建成功(在里面输入内容消费者可以接收到)

其中‘localhost:9092’表示生产者的ip及开放端口号,‘topic_test’表示主题名字

创建消费者

打开一个cmd窗口,切换路线,输入:.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic topic_test --from-beginning,可以用生产者测试是否可以接收到消息

其中‘localhost:9092’表示要连接的主机及端口,‘topic_test’表示主题名字

用python操作kafka

1. 安装包kafka-python:打开Anaconda Prompt,输入pip install kafka-python

2.创建生产者并发送信息步骤:打开python的Jupyter,输入并运行:

from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='localhost:9092')  # 连接Kafka

msg = " Hello,my id is 4200214119!".encode('utf-8')  # 发送内容,必须是bytes类型

producer.send('topic_test', msg)  # 发送的topic为test

producer.close()  #关闭

 3.创建消费者接收信息步骤:打开python的Jupyter,输入并运行:

from kafka import KafkaConsumer

consumer = KafkaConsumer('topic_test', bootstrap_servers=['localhost:9092'],group_id=None,auto_offset_reset='smallest')

for msg in consumer:

    recv = "%s:%d:%d: key=%s value=%s" % (msg.topic, msg.partition, msg.offset, msg.key, msg.value)

    print(recv)

     #字节到字符串处理函数为msg.value.decode(‘utf-8’)

Kafka与mysql组合使用

1.启动mysql:打开cmd窗口,输入:net start mysql启动mysql服务,使用mysql -uroot -p123456登录mysql,出现‘mysql>’表示登录成功

2.用mysql创建数据库:用create database school;命令创建一个名为school的数据库,用use school;使用该数据库

3.创建表:使用建表语句(如下所示),用show tables;查看所有表(确定是否成功建表)

create table student(

sno int,

sname char(8),

ssex char(2),

sage int);

4.创建生产者:

from kafka import KafkaProducer

import json

producer=KafkaProducer(bootstrap_servers='localhost:9092', value_serializer=lambda v: json.dumps(v).encode('utf-8'))

datas = [{"sno":95001,"sname":"John","ssex":"M","sage":23},{"sno":95002,"sname":"Tom","ssex":"M","sage":23}]

for data in datas:

    producer.send('json_topic',data)

producer.close()

5.创建消费者:打开Anaconda Prompt,输入pip install pymysql下载包,然后在Jupyter输入命令

from kafka import KafkaConsumer

import json

import pymysql.cursors

consumer = KafkaConsumer('json_topic', bootstrap_servers=['localhost:9092'], group_id=None, auto_offset_reset='earliest')

for msg in consumer:

    msg1 = str(msg.value, encoding="utf-8")

    dict = json.loads(msg1)

    connect=pymysql.Connect(host='localhost', port=3306, user='root',  passwd='123456',  db='school', charset='utf8')

    cursor = connect.cursor()

    sql="INSERT INTO student(sno,sname,ssex,sage) VALUES('%d','%s','%s','%d')"

    data=(dict['sno'],dict['sname'],dict['ssex'],dict['sage'])

    cursor.execute(sql%data)

    connect.commit()

    print('成功插入数据')

    connect.close()

6.查看表:在mysql中输入:select * from student;查看student表信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值