Apache kafka 卡夫卡的信息排序
我是卡夫卡的新手,这是我在这里的第一篇帖子,请耐心听我说;) 我们目前正在为我们的用例设计卡夫卡。我正在进行POC测试,对以下结果感到困惑。我确信我错过了某种配置,这导致了这种情况,但请有人看一看,并建议我错过了什么:Apache kafka 卡夫卡的信息排序,apache-kafka,Apache Kafka,我是卡夫卡的新手,这是我在这里的第一篇帖子,请耐心听我说;) 我们目前正在为我们的用例设计卡夫卡。我正在进行POC测试,对以下结果感到困惑。我确信我错过了某种配置,这导致了这种情况,但请有人看一看,并建议我错过了什么: 我有一个简单的Java producer(下面是Java producer代码片段) 和一个简单的Java使用者(下面是Java使用者代码片段) 我有3个代理集群,一个主题是“测试输入”,分区=1,复制因子=3 还有一个混沌脚本,它使用leader分区和另一个随机代理停止代理(
- 我有一个简单的Java producer(下面是Java producer代码片段)
- 和一个简单的Java使用者(下面是Java使用者代码片段)
- 我有3个代理集群,一个主题是“测试输入”,分区=1,复制因子=3
- 还有一个混沌脚本,它使用leader分区和另一个随机代理停止代理(每5分钟一次)。然后在停止3分钟后重新启动停止的代理
- 生产者和消费者都使用该属性连接到所有3个经纪人。。。config.put(“bootstrap.servers”,“10.11.29.187:9092,10.11.29.188:9092,10.11.29.189:9092”)李>
for(long i=1; i <= 1000000; i++)
{
producer.send(new ProducerRecord<String, String>("test-input", null, Long.toString(i)));
Thread.sleep(10);
}
long saveLong=0;
String saveRec=null;
while (true) {
ConsumerRecords<String, String> records = kafkaConsumer.poll(Duration.ofMillis(1000));
for (ConsumerRecord<String, String> record : records) {
long thisLong = Long.parseLong(record.value());
System.out.println(record.value());
if((thisLong - saveLong)!=1){
System.out.println("unexpected values between old record >"+saveRec+"< and new record >"+record.value()+"<");
}
saveLong = thisLong;
saveRec = record.value();
}
}
用于(长i=1;i 8733<和新记录>8737
8737<和新记录>8736之间的意外值
8736<和新记录>8735之间的意外值
8735<和新记录>8734之间的意外值
8734<和新记录>8733之间的意外值
8733<和新记录>8738之间的意外值
46236<和新记录>46240之间的意外值
46240<和新记录>46239之间的意外值
46239<和新记录>46238之间的意外值
46238<和新记录>46237之间的意外值
46237<和新记录>46236之间的意外值
旧记录>46236<和新记录>46241之间的意外值在生产者配置中将max.in.flight.requests.per.connection设置为1,并检查其是否有效。参考:。如果超过1条消息被重新排序并不重要,但您可以使用LongSerializer获取该值。非常感谢A.Dev和Cricket@shma它起作用了吗?设置max.in.flight.requests.per.connection连接到producer配置中的1,并检查其是否工作。参考:。如果超过1条,则重新排序邮件并不重要,但您可以使用LongSerializer获取值。非常感谢A.Dev和Cricket@shma它起作用了吗?