我对卡夫卡比较新.我已经做了一些实验,但有一些事情我不清楚消费者抵消.从我到目前为止所理解的情况来看,当消费者开始时,它将开始读取的偏移量由配置设置决定auto.offset.reset(如果我错了,请纠正我).
现在说,例如主题中有10条消息(偏移0到9),并且消费者在它关闭之前(或者在我杀死消费者之前)恰好消耗了其中的5条消息.然后说我重启那个消费者流程.我的问题是:
如果auto.offset.reset设置为smallest,它是否总是从偏移量0开始消耗?
如果auto.offset.reset设置为largest,是否将从偏移量5开始消耗?
关于这种情况的行为总是确定的吗?
如果我的问题中的任何内容不清楚,请不要犹豫.提前致谢.
所有的例子的卡夫卡 | 生产者显示ProducerRecord的键/值对不仅是相同的类型(所有示例都显示<String,String>),而是相同的值.例如:
producer.send(new ProducerRecord<String, String>("someTopic", Integer.toString(i), Integer.toString(i)));
Run Code Online (Sandbox Code Playgroud)
但是在Kafka文档中,我似乎无法找到解释键/值概念(及其基本目的/效用)的位置.在传统的消息传递(ActiveMQ,RabbitMQ等)中,我总是在特定的主题/队列/交换中发出消息.但Kafka是第一个似乎需要键/值对的代理,而不仅仅是一个正常的'字符串消息.
所以我问:要求生产者发送KV对的目的/用途是什么?
messaging message-queue key-value messagebroker apache-kafka
producer 发送消息1,2,3,4
consumer 接收消息1,2,3,4
consumer 崩溃/断开
producer 发送消息5,6,7
consumer 恢复,应该从5而不是7开始收到消息
对于这种结果,offset我必须使用哪个值以及需要做哪些其他更改/配置