【发布时间】:2019-06-10 08:35:57
【问题描述】:
以下
@KafkaListener(id = "id1", autoStartup = "false", topics = { "topic1", "topic2" }
spring.kafka.consumer.auto-offset-reset=earliest
假设在 .start 运行之前每个主题中都有多条消息
当
KafkaListenerEndpointRegistry.getListenerContainer("id1").start();
是否保证来自 topic1 的所有消息都将在 topic2 之前得到处理(这就是我所看到的),如果在处理 topic2 的同时将消息发送到 topic1 会发生什么。
++++++++++++++++++++++++++++++++++++++++++++++++++ ++
编辑
运行以下测试,每个主题都有一个分区。 在运行测试之前,topic1 中有 10 条消息,topic2 中有 10 条消息。 运行代码并让 10 个 topic1 消息得到处理,但在处理 topic2 消息时,我向 topic1 发送了更多消息,但在处理完来自 topic2 的所有预先存在的消息之前,侦听器未处理那里。
所以看起来消息是从主题属性数组中按顺序处理的,并且在处理现有消息之前不会处理任何新消息。
处理消息的顺序 主题 1 消息 1 主题 1 消息 2 ... 主题 1 消息 10 主题 2 消息 1 主题 2 消息 2 ... ...此时向主题 1 发送了消息 11 ... 主题 2 消息 10 topic1 消息 11
【问题讨论】: