kafka(二) 生产者
Kafka发送消息的主要步骤
序列化ProducerRecord.
如果ProducerRecord中指定了Partition.则分区器(Partitioner)不做任何事情.否则分区器根据消息的key得到一个Partition。
消息被添加到相应的batch中,独立的线程将这些batch发送到broker上.
broker收到消息会返回一个响应.
成功写入返回RecordMetaData对象,包含了Topic信息、Patition信息、消息在Partition中的Offset信息.
失败会返回错误. 生产者收到失败会尝试重试,达到指定重试次数还没成功,将抛出异常.
生产者发送消息的三种方式
同步发送(At least one) :
以同步的方式发送消息时,一条一条的发送,对每条消息返回的结果判断, 可以明确地知道每条消息的发送情况,但是由于同步的方式会阻塞,只有当消息通过get返回future对象时,才会继续下一条消息的发送.
消息绝不会丢,但可能会重复传输.
异步发送(At most once):
消息可能会丢,但绝不会重复传输