Java 手动启动Kafka侦听器后无法查找
我有一个用例,其中我有一个API来启动卡夫卡侦听器(@KafkaListener)。然后,对于卡夫卡侦听器,我将其当前偏移量修改为给定偏移量。但是,在启动侦听器并调用seek方法之后,偏移量并没有改变。我认为它显示了一些异步行为。我正在使用一个Java 手动启动Kafka侦听器后无法查找,java,spring,spring-boot,apache-kafka,spring-kafka,Java,Spring,Spring Boot,Apache Kafka,Spring Kafka,我有一个用例,其中我有一个API来启动卡夫卡侦听器(@KafkaListener)。然后,对于卡夫卡侦听器,我将其当前偏移量修改为给定偏移量。但是,在启动侦听器并调用seek方法之后,偏移量并没有改变。我认为它显示了一些异步行为。我正在使用一个线程。在两者之间使用sleep(1000),然后它就可以工作了 我有两个问题- 有没有办法避免“线程。睡眠” 另外,我可以只为一些主题启动我的侦听器吗 (当前,如果我启动我的侦听器,它将侦听所有主题) 代码 public void startListene
线程。在两者之间使用sleep(1000)
,然后它就可以工作了
我有两个问题-
public void startListener(String topic, int partition, long offset) {
this.kafkaListenerEndpointRegistry.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
log.error(e.getMessage(), e);
}
seekByOffset(topic, partition, offset);
}
public boolean seekByOffset(String topic, int partition, long offset) {
final boolean[] flag = new boolean[1];
this.getCallbacksAndTopics()
.forEach(
(cb, topicPartitions) -> {
for (TopicPartition topicPartition : topicPartitions) {
if (topic.equals(topicPartition.topic())
&& partition == topicPartition.partition()) {
cb.seek(topic, partition, offset);
flag[0] = true;
}
}
});
return flag[0];
}