卡夫卡中的邮件排序

时间:2019-07-15 22:25:40

标签: apache-kafka

我是Kafka的新手,这是我在这里的第一篇文章,所以请忍受我;)

目前,我们是用例的POC'ing Kafka。我正在运行POC测试,并为以下结果感到困惑。我确信我已经错过了某种配置,这导致了这种情况,但是请有人可以看看并提出我所缺少的建议:

  • 我有一个简单的Java生产者(下面的JAVA PRODUCER代码片段)
  • 还有一个简单的Java使用者(下面的Java消费者代码段)
  • 我有3个代理群集,主题为“ test-input”,partitions = 1,replication-factor = 3
  • 还有一个Chaos脚本,该脚本以领导者分区和另一个随机代理停止代理(每5分钟)。停止3分钟后,它会重新启动已停止的经纪人
  • 生产者和消费者都使用该属性连接到所有3个代理... config.put(“ bootstrap.servers”,“ 10.11.29.187:9092,10.11.29.188:9092,10.11.29.189:9092”) ;

JAVA PRODUCER代码段:

for(long i=1; i <= 1000000; i++)  
{  
        producer.send(new ProducerRecord<String, String>("test-input", null, Long.toString(i)));  
        Thread.sleep(10);  
} 

JAVA消费者代码段:

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();  
    }  
}  

我的期望:

  • 当Chaos脚本停止领先经纪人时,制片人和 消费者将连接到其余经纪人
  • 所有记录将由消费者接收
  • 记录将按照生产者发布的顺序

但是,消费者生产以下物品。而且我无法弄清楚是什么导致乱序消息?非常感谢任何帮助,在此先感谢!

8729
8730
8731
8732
[main] INFO org.apache.kafka.clients.FetchSessionHandler-[Consumer clientId = consumer-1,groupId = null]将提取请求(sessionId = 151689261,epoch = 8758)发送到节点1时出错:org.apache.kafka.common .errors.DisconnectException。
8733
8737
旧记录> 8733 <和新记录> 8737 << br />之间的意外值 8736
旧记录> 8737 <和新记录> 8736 << br />之间的意外值 8735
旧记录> 8736 <和新记录> 8735 << br />之间的意外值 8734
旧记录> 8735 <和新记录> 8734 << br />之间的意外值 8733
旧记录> 8734 <和新记录> 8733 << br />之间的意外值 8738
旧记录> 8733 <和新记录> 8738 << br />之间的意外值 8739
8740
8741
8742

...
...

46233
46234
46235
[main] INFO org.apache.kafka.clients.FetchSessionHandler-[Consumer clientId = consumer-1,groupId = null]将提取请求(sessionId = 93331214,纪元= 6687)发送到节点1时出错:org.apache.kafka.common .errors.DisconnectException。 46236
46240
旧记录> 46236 <和新记录> 46240 << br />之间的意外值 46239
旧记录> 46240 <和新记录> 46239 << br />之间的意外值 46238
旧记录> 46239 <和新记录> 46238 << br />之间的意外值 46237
旧记录> 46238 <和新记录> 46237 << br />之间的意外值 46236
旧记录> 46237 <和新记录> 46236 << br />之间的意外值 46241
旧记录> 46236 <和新记录> 46241 << br />之间的意外值 46242
46243
46244
46245

0 个答案:

没有答案