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() # 不加有可能导致内存泄漏
原文:https://www.cnblogs.com/chenyishi/p/10782609.html