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() # 不加有可能導致內存泄漏