Java 如何使用spring boot在一个使用者类中顺序阅读2个卡夫卡主题?

Java 如何使用spring boot在一个使用者类中顺序阅读2个卡夫卡主题?,java,spring-boot,apache-kafka,spring-kafka,Java,Spring Boot,Apache Kafka,Spring Kafka,我有两个卡夫卡主题A和B。我希望每次我的消费者启动时,它都先转到主题A。主题A包含关于主题B的信息,我将依靠这些信息从主题B获取数据 所以本质上我需要先阅读主题A,然后再阅读主题B,我只需要在每次重新启动程序时做一次 我能想到的是: @KafkaListener(topics = {"A" , "B"}) 或: 两者都不能保证阅读的顺序 我如何强制我的程序先阅读主题A,然后在完成主题A的最新更新后才转到主题B?使用类似的方法 @KafkaListener(id=“bReceiver”,auto

我有两个卡夫卡主题A和B。我希望每次我的消费者启动时,它都先转到主题A。主题A包含关于主题B的信息,我将依靠这些信息从主题B获取数据

所以本质上我需要先阅读主题A,然后再阅读主题B,我只需要在每次重新启动程序时做一次

我能想到的是:

@KafkaListener(topics = {"A" , "B"})
或:

两者都不能保证阅读的顺序


我如何强制我的程序先阅读主题A,然后在完成主题A的最新更新后才转到主题B?

使用类似的方法

@KafkaListener(id=“bReceiver”,autoStartup=“false,topics=“B”)
public void receive(){}
设置
idleEventInterval
并添加

@Autowired
卡夫卡列斯特登记处;
@EventListener(条件=“event.listenerId=”aReceiver`)
公共void事件侦听器(ListenerContainerIdleEvent事件){
this.registry.getListenerContainer(“aReceiver”).stop(()->{});
this.registry.getListenerContainer(“bReceiver”).start();
}

对于一直投票认为这个问题没有“重点”的人,你能告诉我如何将其划分为多个子QN以满足你的标准吗?或者你认为它包含哪些不同的QN?我的意思是,说真的,主题行和描述的最后一句是不一样的,但这并不意味着它包含两个问题,对吗?我没有投票,但“需要更多关注”并不一定意味着它问了不止一个问题,也可能意味着你的问题太广泛(在解决方案中可能需要一整篇文章或一本书)。无论如何,我认为你不能轻易解决这个问题。卡夫卡主题本质上是异步的,因此没有真正的顺序。如果您想要订购,您可能需要使用基于拉动的机制。谢谢Mark,下面是Russell提供的解决方案。这不是一个像文章一样的答案,这正是我需要的。这就是为什么我觉得人们可能太急于点击“需要更多关注”。嗨,拉塞尔,在尝试这种方法时,我遇到了一些新问题,你能帮我看一下吗?非常感谢。
@KafkaListener(topics = "A")
public void receive() {}

@KafkaListener(topics = "B")
public void receive() {}