卡夫卡反应堆消耗具有特定偏移量的记录

时间:2019-10-28 15:15:17

标签: java spring-boot apache-kafka nullpointerexception project-reactor

我正在寻找使用kafka反应器消耗具有特定偏移量的消息。
基于KafkaReceiver界面,我们可以通过调用<T> Mono<T> doOnConsumer(Function<Consumer<K, V>, ? extends T> function);
对与KafkaReceiver关联的消费者进行一些操作 这是我的用法示例:

        KafkaReceiver.create(
                receiverOptions
                        .subscription(setOf(topicName))
        )
                .doOnConsumer { consumer ->
                    consumer.partitionsFor(topicName)
                            .map { partitionInfo -> Pair(TopicPartition(topicName, partitionInfo.partition()), Instant.parse("2019-10-27-T00:00:00Z").toEpochMilli()) }
                            .toMap()
                            .let(consumer::offsetsForTimes)
                }
                .flatMapMany { offsetsForTimes ->
                    val options = receiverOptions
                            .subscription(setOf(topicName))
                            .addAssignListener { partitions ->
                                partitions.map { partion ->
                                    offsetsForTimes[partion.topicPartition()]
                                            ?.offset()
                                            ?.let(partion::seek)
                                }
                            }
                    KafkaReceiver.create(options)
                            .receiveAutoAck()
                }
                .flatMap { it }
                .map { record -> doingSomething() }
                .onErrorContinue { exception, _ -> logger.error(exception)}
                .doOnNext { data -> logger.info("ok ", data)}
                .subscribe()

当我运行该应用程序时,我得到一个nullPointerException

...
Caused by: reactor.core.Exceptions$ErrorCallbackNotImplemented: java.lang.NullPointerException
Caused by: java.lang.NullPointerException: null
...

有人可以告诉我如何使用kafka反应器来消耗具有特定偏移量的记录吗?使用 kafka offsetsForTimes。
谢谢。

Kafka Reactor版本:1.2.0.RELEASE
春季启动版本:2.1.9.RELEASE

0 个答案:

没有答案