Kafka制片人行为

w8ntj3qf  于 2021-06-08  发布在  Kafka
关注(0)|答案(0)|浏览(242)

我正在尝试Kafka的最新版本1.1.0。我对制片人的行为有点困扰。
下面是一小段代码

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("acks", "all");
props.put("retries", 3);
props.put("max.in.flight.requests.per.connection", 1);

Producer<String, String> producer = new KafkaProducer<>(props);
for (int i = 0; i < 100; i++)
   producer.send(new ProducerRecord<String, String>("my-topic", 
   Integer.toString(i), Integer.toString(i)), new CallBack());

假设
每条消息都被发送到主题的同一分区。
每个消息的大小足够大,可以提交给代理(不在缓冲区中)
现在,当索引为0并且send方法失败,但对于后续的send调用没有失败时,那么,在这种情况下,消息将以无序的顺序到达代理。也就是说,即使添加了重试代码,索引0消息也不会是第一个到达代理的消息。
如果我在下面添加配置属性enable.idempotence=true,会是相同的行为吗
有什么优雅的方法来处理这种情况吗?那就是保持信息的顺序
提前谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题