【发布时间】:2022-06-15 23:24:19
【问题描述】:
正在学习 Kafka,我想知道是否有任何方法可以在 API 关闭时使用已排队/未使用的消息。
例如 当 API 关闭时,我向主题发送消息 {1,2,3,4,5} 启动 API,消费者应该消费消息 {1,2,3,4,5}
目前
@Service
public class ConsumerService {
private final Logger logger = LoggerFactory.getLogger(ConsumerService.class);
@KafkaListener(topics = "${kafka.topic-name}", groupId = "${kafka.group-id}")
public void consume(String message) {
logger.info(String.format("Message recieved -> %s", message));
}
}
但这只会在 API 启动并运行时消耗消息
【问题讨论】:
-
你在说什么“API”?如果监听器没有运行,则记录会在主题中累积,并在下次启动时被消耗。第一次需要将
auto.offset.reset设置为earliest——否则消费者只会从话题末尾latest开始消费。
标签: apache-kafka kafka-consumer-api spring-kafka