– Start
点击此处观看本系列配套视频
我们先来回答一下上个例子最后问题的答案,很遗憾 Producer 并不能证明消息发送成功了,如果设置了 retry,Producer 会再次发送消息,这会导致消息重复,如何避免?有两种办法,一种是 Idempotent,也就是说支持重复发送,broker 会自动认为是一条消息,另一种办法是使用事务。
下面的例子演示使用 Idempotent。
package shangbo.kafka.example2;
import java.util.Properties;
import org.apache.kafka.clients.producer.Callback;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
public class App {
public static void main(String[] args) {
// Producer 配置信息,应该配置在属性文件中
Properties props = new Properties();
//指定要连接的 broker