【发布时间】:2019-09-02 10:02:32
【问题描述】:
我有以下问题。 我想启动一个从kafka读写的spring boot应用程序 使用@KafkaListener。
我想:
- 将 kafka 消费者初始化为最新的偏移量。
- 向 kafka 写消息
- 然后使用在步骤 1 中创建的消费者从 kafka 读取这些消息
我面临以下问题第 2 步有时会在 kafka 消费者有时间执行第一次 poll() 操作之前运行。 这意味着它会忽略这些消息,因为它会在最晚之前考虑它们。
在使用 spring-kafka 时是否有保证消费者在应用程序启动之前轮询。
【问题讨论】:
-
如果你在同一个线程中消费和生产。然后您可以简单地强制
KafkaTemplate同步发送,这意味着发送将阻塞,直到消息发送完毕。例如。kafkaTemplate.send("key", "value").get()。.send(..)返回一个Future,您可以通过调用.get().来阻止它