windows下Kafka的环境配置和启动以及测试(Kafka-python API)

环境:
python 3.5
kafka-python 1.4.6
kafka环境:2.11-2.30
zookeeper环境:同上(ps:现在下载kafka环境包的时候,会同时搭载zookeeper,不需要专门安装了)

第一步:
去网址:https://kafka.apache.org/downloads 下载kafka的压缩包
在这里插入图片描述
用解压工具解压缩到你想要的位置,我这里直接放到了D根目录上。在这里插入图片描述
在该文件下,同时给配置了windows启动(bat),linux启动(sh) 的脚本。并且默认端口,kafka是9092,zookeeper是:2181
linux启动在这里插入图片描述
windows启动在这里插入图片描述
如果需要修改相关配置,请转至config下server.properties文件进行修改。具体参数请百度。

kafka-python的安装:
pip install kafka-python

检测是否安装成功:
成功!

第二步 启动:
先启动zookeeper:
启动:自己写个bat更方便启动

cd /d D:\kafka_2.11-2.3.0\bin\windows
start cmd /c "title start_zookeeper && zookeeper-server-start.bat d:\kafka_2.11-2.3.0\config\zookeeper.properties"
	  请换成自己的路径

在这里插入图片描述
出现这个就说明zookeeper启动成功了

	启动:kafka
	同样是一个bat
cd /d D:\kafka_2.11-2.3.0\bin\windows
start cmd /c "title start_kafka && kafka-server-start.bat d:\kafka_2.11-2.3.0\config\server.properties"

会出现一大串输出信息,一般不会出现错误。因为没设置类别(Topic),所以启动会有些慢。
在这里插入图片描述
在这里插入图片描述
此时,环境的配置和启动已经完成了。

第三步 测试:

生产者Producer:

from kafka import KafkaProducer
import json

def send_json():
    producer = KafkaProducer(bootstrap_servers=['localhost:9092'],
                             value_serializer=lambda v: json.dumps(v).encode('utf-8'))
    for i in range(10):
        msg = {'{}'.format(i): '我是第{}个'.format(i)}

        producer.send('world', msg)
    producer.close()
    print('wanbi')

def send_str():
    producer = KafkaProducer(bootstrap_servers=['localhost:9092'],
                             value_serializer=lambda v: v.encode('utf-8'))
    for i in range(10):
        msg = '我是第{}个'.format(i)

        producer.send('world', msg)
    producer.close()
    print('wanbi')

消费者Consumer:

from kafka import KafkaConsumer
import time


def log(str):
    t = time.strftime(r"%Y-%m-%d_%H-%M-%S", time.localtime())
    print("[%s]%s" % (t, str))


def consummer():
    log('start consumer')
    # 消费localhost:9092上的world 这个Topic,指定consumer group是consumer
    consumer = KafkaConsumer('world', group_id='consumer', bootstrap_servers=['localhost:9092'])
    for msg in consumer:
        recv = "%s:%d:%d: key=%s value=%s" % (msg.topic, msg.partition, msg.offset, msg.key, msg.value.decode('utf-8'))
        log(recv)
        # print(recv)

if __name__ == '__main__':
    consummer()

因为kafka默认收录的字节类型的,所以,我们在传输的时候,必须要先encode(‘utf-8’)下,否则会报错的。
好了。到这里就完毕了。 一些其他的操作,等下一篇再来说吧
小伙伴们,可以去尝试操作了~~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值