Kafka

Kafka_第1张图片

发送消息的三种机制:

1. 忘记并发送:适用于高吞吐量,配合参数acks=0,这样生产者不需要等待服务器的响应,以网络能支持的最大速度发送消息

本质是一种异步,但不会获取返回结果。吞吐量最高

2. 同步发送:适用于顺序发送,设置retries重试时间

知道发送状态,会阻塞,只有当消息通过get返回future对象时,才会继续下一条消息的发送。

    future = producer.send(topic="test_topic", key="num", value=i)
     # 同步阻塞,通过调用get()方法进而保证一定程序是有序的.
     try:
         record_metadata = future.get(timeout=10)
     except kafka_errors as e:
         print(str(e))

3. 异步发送+回调函数:适用于只关心状态,不关心顺序,参数retries=0,并将发送失败的消息记录到日志文件中

在调用send方法发送消息的同时,指定一个回调函数,服务器在返回响应时会调用该回调函数,通过回调函数能够对异常情况进行处理,当调用了回调函数时,只有回调函数执行完毕生产者才会结束,否则一直会阻塞。

     producer.send(
         topic="test_topic", key="num", value=i
     ).add_callback(on_send_success).add_errback(on_send_error)
 
     producer.flush()
     producer.close()

 

 

 

 

 

参考:

https://www.cnblogs.com/FG123/p/10091478.html

https://segmentfault.com/a/1190000020447532

https://blog.csdn.net/rogerxue12345/article/details/80524804

你可能感兴趣的:(Kafka)