我目前的产品是Apache Kafka Clients Consumer 0.9。我打算升级到New Apache Kafka Clients Consumer 0.10.1.0。我已经完成了API更改的开发,并且产品正在使用来自Kafka代理(v.0.10)的消息,因此我不知道如何替换它。
我担心的是,只需用New Kafka Consumer 0.10.1替换升级产品,是否可以保证安全。当然,现有产品将不得不解决,消费者群体将是相同的。
API更改如下。
// OLD KAFKA CONSUMER API
val consumerConnector = Consumer.create(consumerProperties)
val kafkaStreams: List[KafkaStream[Array[Byte], Array[Byte]]] = consumerConnector.createMessageStreams(threadCount).get(topic).get
kafkaStreams map (stream => {
val iterator: ConsumerIterator[Array[Byte], Array[Byte]] = stream.iterator
while (true) {
// process iterator.next.message
}
})
// NEW KAFKA CONSUMER API
val kafkaConsumerList = List[KafkaConsumer[Array[Byte], Array[Byte]]
for (i <- 1 to threadCount) {
val kafkaConsumer: KafkaConsumer[Array[Byte], Array[Byte]] = new KafkaConsumer[Array[Byte], Array[Byte]](consumerProperties)
kafkaConsumerList = kafkaConsumer :: kafkaConsumerList
}
kafkaConsumerList map (consumer => {
consumer.subscribe(topics)
while (true) {
val records: ConsumerRecords[Array[Byte], Array[Byte]] = consumer.poll(pollTimeout)
while (records.iterator.hasNext) {
// process records.iterator.next.value
}
}
})
作为参考,我正在使用自动偏移方法,我将继续这样做。