是否可以在 Kafka 中顺序处理两个主题?

Is it possible to process two topics sequentially in Kafka?

我在 Kafka 代理中有两个主题 AB。是否可以按顺序而不是并行地使用这些主题?我应该将这些消费者添加到同一个消费者组吗?

当然可以有两个连续的消费者循环。

例如

Duration d = Duration.ofMillis(100);
ConsumerRecords c1Records = consumer1.poll(d);
while (c1Records.hasNext()) {
  process1(c1Records.next());
}

ConsumerRecords c2Records = consumer2.poll(d);
while (c2Records.hasNext()) {
  process2(c2Records.next());
}

因为是不同的topic,所以不在同一个消费群里也没关系。一组可以消费多个话题

由于Kafka有轮询机制,消费者的行为是可以控制的。 以下伪代码可以在单线程中构建。 -max.poll.records=1 //根据具体用例更改

  • Consumer1.poll(持续时间)
  • Consumer2.poll(持续时间)

这将消耗来自每个分区的单个消息。