kafka 在send之后不会立即把消息发送到broker。会把消息发到producer所在电脑内存里,后端的IOThread会扫描内存,并从中取出消息进行消费。

在调用close()或者flush()方法之后,会立即将消息发送到broker里。

 

from kafka import KafkaProducer

import pickle


producer = KafkaProducer(
    bootstrap_servers='10.2.2.139:9092',
    key_serializer=lambda k:pickle.dumps(k),
    value_serializer=lambda v:pickle.dumps(v))

producer.send('20190428',key='name',value='cys',partition=0)
# for i in range(10):
#     for ii in range(1):
#         result = producer.send('20190428-4',"chenyishi".encode())
#         print(result)
#         print(type(result))

# producer.flush()
producer.close()  # 不加有可能导致内存泄漏

 

posted on 2019-04-28 10:36  chester·chen  阅读(1537)  评论(0编辑  收藏  举报